From c3222f59c50cc2c00a7871e14cb50cd84686a846 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 14 Sep 2020 17:10:32 -0400 Subject: [PATCH 01/55] router --- .../world/blocks/distribution/Router.java | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/world/blocks/distribution/Router.java b/core/src/mindustry/world/blocks/distribution/Router.java index cb0ae9807d..6dae71a26e 100644 --- a/core/src/mindustry/world/blocks/distribution/Router.java +++ b/core/src/mindustry/world/blocks/distribution/Router.java @@ -1,9 +1,12 @@ package mindustry.world.blocks.distribution; +import arc.math.*; +import arc.util.ArcAnnotate.*; import mindustry.content.*; import mindustry.gen.*; import mindustry.type.*; import mindustry.world.*; +import mindustry.world.blocks.*; import mindustry.world.meta.*; public class Router extends Block{ @@ -20,10 +23,22 @@ public class Router extends Block{ noUpdateDisabled = true; } - public class RouterBuild extends Building{ + public class RouterBuild extends Building implements ControlBlock{ public Item lastItem; public Tile lastInput; public float time; + public @NonNull BlockUnitc unit = Nulls.blockUnit; + + @Override + public void created(){ + unit = (BlockUnitc)UnitTypes.block.create(team); + unit.tile(this); + } + + @Override + public Unit unit(){ + return (Unit)unit; + } @Override public void updateTile(){ @@ -72,6 +87,22 @@ public class Router extends Block{ } public Building getTileTarget(Item item, Tile from, boolean set){ + if(isControlled()){ + unit.health(health); + unit.team(team); + + int angle = Mathf.mod((int)((angleTo(unit.aimX(), unit.aimY()) + 45) / 90), 4); + + if(unit.isShooting()){ + Building other = nearby(angle); + if(other.acceptItem(this, item)){ + return other; + } + } + + return null; + } + int counter = rotation; for(int i = 0; i < proximity.size; i++){ Building other = proximity.get((i + counter) % proximity.size); From 50491755d1d4a3dcccdca5758c35c57c4acc893c Mon Sep 17 00:00:00 2001 From: ThePythonGuy <45978337+ThePythonGuy3@users.noreply.github.com> Date: Sat, 3 Oct 2020 16:59:39 +0200 Subject: [PATCH 02/55] typo and stuff --- core/assets/bundles/bundle_es.properties | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index 8c538a6974..5c87f27455 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -2,14 +2,14 @@ credits.text = Creado por [royal]Anuken[] - [sky]anukendev@gmail.com[] credits = Créditos contributors = Traductores y Contribuidores discord = ¡Únete al Discord de Mindustry! -link.discord.description = La sala oficial del Discord de Mindustry +link.discord.description = El servidor official de Discord de Mindustry link.reddit.description = El subreddit de Mindustry link.github.description = Código fuente del juego link.changelog.description = Lista de actualizaciones -link.dev-builds.description = Versiones de desarrollo inestables +link.dev-builds.description = Versiones en desarrollo inestables link.trello.description = Tablero de Trello oficial para las características planificadas link.itch.io.description = itch.io es la página donde podes descargar las versiones para PC y web -link.google-play.description = Ficha en la Google Play Store +link.google-play.description = Página de Mindustry en Google Play Store link.f-droid.description = Página de F-Droid del juego link.wiki.description = Wiki oficial de Mindustry link.suggestions.description = Sugerir nuevas funciones @@ -18,7 +18,7 @@ screenshot = Captura de pantalla guardada en {0} screenshot.invalid = Mapa demasiado grande, no hay suficiente memoria para la captura de pantalla. gameover = Tu núcleo ha sido destruido. gameover.pvp = ¡El equipo[accent] {0}[] ha ganado! -highscore = [accent]¡Nueva mejor puntuación! +highscore = [accent]¡Nuevo récord de puntuación! copied = Copiado. indev.popup = [accent]v6[] is currently in [accent]alpha[].\n[lightgray]This means:[]\n[scarlet]- The campaign is completely unfinished[]\n- Content is missing\n - Most [scarlet]Unit AI[] does not work properly\n- Many units are unfinished\n- Everything you see is subject to change or removal.\n\nReport bugs or crashes on [accent]Github[]. indev.notready = This part of the game isn't ready yet @@ -38,12 +38,12 @@ be.ignore = Ignorar be.noupdates = No se encontraron actualizaciones. be.check = Revisando actualizaciones -schematic = Esquemático -schematic.add = Guardar esquemático... -schematics = Esquemáticos -schematic.replace = Un esquemático con ese nombre ya existe. ¿Deseas remplazarlo? -schematic.exists = Un esquemático con ese nombre ya existe. -schematic.import = Importar esquemático... +schematic = Esquema +schematic.add = Guardar esquema... +schematics = Esquemas +schematic.replace = Un esquema con ese nombre ya existe. ¿Deseas remplazarlo? +schematic.exists = Un esquema con ese nombre ya existe. +schematic.import = Importar esquema... schematic.exportfile = Exportar archivo schematic.importfile = Importar archivo schematic.browseworkshop = Buscar en el Steam Workshop From 6b4a7d025b20f6d2cb7b8722204fa7b9a316fdfa Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 14 Oct 2020 08:49:05 -0400 Subject: [PATCH 03/55] Fixed #2938 / Fixed #2936 --- core/src/mindustry/ai/Pathfinder.java | 2 +- desktop/src/mindustry/desktop/DesktopLauncher.java | 4 +++- jitpack.yml | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 jitpack.yml diff --git a/core/src/mindustry/ai/Pathfinder.java b/core/src/mindustry/ai/Pathfinder.java index c24cecd49c..6d6e5fc8e9 100644 --- a/core/src/mindustry/ai/Pathfinder.java +++ b/core/src/mindustry/ai/Pathfinder.java @@ -86,7 +86,7 @@ public class Pathfinder implements Runnable{ } //special preset which may help speed things up; this is optional - preloadPath(getField(state.rules.waveTeam, costGround, fieldCore)); + //preloadPath(getField(state.rules.waveTeam, costGround, fieldCore)); start(); }); diff --git a/desktop/src/mindustry/desktop/DesktopLauncher.java b/desktop/src/mindustry/desktop/DesktopLauncher.java index bd9ec3e81b..76b72e3ca3 100644 --- a/desktop/src/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/mindustry/desktop/DesktopLauncher.java @@ -227,7 +227,9 @@ public class DesktopLauncher extends ClientLauncher{ @Override public void updateLobby(){ - SVars.net.updateLobby(); + if(SVars.net != null){ + SVars.net.updateLobby(); + } } @Override diff --git a/jitpack.yml b/jitpack.yml new file mode 100644 index 0000000000..b2c514bc30 --- /dev/null +++ b/jitpack.yml @@ -0,0 +1,2 @@ +jdk: + - openjdk14 From d6301103965542aa242fb3700d7a6e578424f26f Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 14 Oct 2020 09:08:03 -0400 Subject: [PATCH 04/55] JITPack version check --- core/src/mindustry/ai/Pathfinder.java | 3 --- settings.gradle | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/core/src/mindustry/ai/Pathfinder.java b/core/src/mindustry/ai/Pathfinder.java index 6d6e5fc8e9..4a951d3448 100644 --- a/core/src/mindustry/ai/Pathfinder.java +++ b/core/src/mindustry/ai/Pathfinder.java @@ -85,9 +85,6 @@ public class Pathfinder implements Runnable{ tiles[tile.x][tile.y] = packTile(tile); } - //special preset which may help speed things up; this is optional - //preloadPath(getField(state.rules.waveTeam, costGround, fieldCore)); - start(); }); diff --git a/settings.gradle b/settings.gradle index 52b0980311..265a6a5024 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,4 +1,4 @@ -if(JavaVersion.current().ordinal() < JavaVersion.VERSION_14.ordinal()){ +if(JavaVersion.current().ordinal() < JavaVersion.VERSION_14.ordinal() && System.getenv("JITPACK") != "true"){ throw new GradleException("!!! YOU MUST USE JAVA 14 OR ABOVE TO COMPILE AND RUN MINDUSTRY !!! Read the README. Your version: ${System.properties["java.version"]}") } From 2b435c2600b72adc61a20fd1ed3ec3e74bb8aa9f Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 14 Oct 2020 09:13:29 -0400 Subject: [PATCH 05/55] UnitType serializer set --- core/src/mindustry/io/JsonIO.java | 12 ++++++++++++ settings.gradle | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/io/JsonIO.java b/core/src/mindustry/io/JsonIO.java index 39c3a1a821..eb3815ba76 100644 --- a/core/src/mindustry/io/JsonIO.java +++ b/core/src/mindustry/io/JsonIO.java @@ -165,6 +165,18 @@ public class JsonIO{ } }); + json.setSerializer(UnitType.class, new Serializer<>(){ + @Override + public void write(Json json, UnitType object, Class knownType){ + json.writeValue(object.name); + } + + @Override + public UnitType read(Json json, JsonValue jsonData, Class type){ + return Vars.content.getByName(ContentType.unit, jsonData.asString()); + } + }); + json.setSerializer(ItemStack.class, new Serializer<>(){ @Override public void write(Json json, ItemStack object, Class knownType){ diff --git a/settings.gradle b/settings.gradle index 265a6a5024..52b0980311 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,4 +1,4 @@ -if(JavaVersion.current().ordinal() < JavaVersion.VERSION_14.ordinal() && System.getenv("JITPACK") != "true"){ +if(JavaVersion.current().ordinal() < JavaVersion.VERSION_14.ordinal()){ throw new GradleException("!!! YOU MUST USE JAVA 14 OR ABOVE TO COMPILE AND RUN MINDUSTRY !!! Read the README. Your version: ${System.properties["java.version"]}") } From fb0179da95308206f6c6e450039ed1d5a7da0109 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 14 Oct 2020 09:15:47 -0400 Subject: [PATCH 06/55] Attempting jitpack Java 14 workaround --- jitpack.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/jitpack.yml b/jitpack.yml index b2c514bc30..e1dfa83815 100644 --- a/jitpack.yml +++ b/jitpack.yml @@ -1,2 +1,4 @@ -jdk: - - openjdk14 +before_install: + - wget https://github.com/sormuras/bach/raw/master/install-jdk.sh + - source install-jdk.sh --feature 14 + - jshell --version \ No newline at end of file From fa2cdb752a670bf19505273a57860e3c406ad9d7 Mon Sep 17 00:00:00 2001 From: Sharlotte <60801210+sharlotte-mobile@users.noreply.github.com> Date: Thu, 15 Oct 2020 20:46:29 +0900 Subject: [PATCH 07/55] changed private -> public of checkRadius method when i try to change color of forceField by using draw method , the Mindustry is crashed because of that private method. --- core/src/mindustry/entities/abilities/ForceFieldAbility.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/entities/abilities/ForceFieldAbility.java b/core/src/mindustry/entities/abilities/ForceFieldAbility.java index fa9fa5e2c8..d341191a74 100644 --- a/core/src/mindustry/entities/abilities/ForceFieldAbility.java +++ b/core/src/mindustry/entities/abilities/ForceFieldAbility.java @@ -94,7 +94,7 @@ public class ForceFieldAbility extends Ability{ } } - private void checkRadius(Unit unit){ + public void checkRadius(Unit unit){ //timer2 is used to store radius scale as an effect realRad = radiusScale * radius; } From 86c2fe880585bab8824356d7ed2e11a41df2b5e0 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 15 Oct 2020 13:44:20 -0400 Subject: [PATCH 08/55] too many things to list --- core/assets/bundles/bundle.properties | 3 +- core/assets/maps/craters.msav | Bin 11971 -> 11955 bytes core/src/mindustry/Vars.java | 2 - core/src/mindustry/ai/Pathfinder.java | 4 +- core/src/mindustry/ai/WaveSpawner.java | 16 +- core/src/mindustry/ai/types/FormationAI.java | 25 ++ core/src/mindustry/ai/types/MinerAI.java | 4 +- core/src/mindustry/ai/types/RepairAI.java | 6 +- core/src/mindustry/content/Blocks.java | 2 +- core/src/mindustry/content/Bullets.java | 2 +- core/src/mindustry/core/Logic.java | 65 +++- .../mindustry/ctype/UnlockableContent.java | 9 +- core/src/mindustry/editor/WaveGraph.java | 2 +- .../mindustry/entities/bullet/BulletType.java | 9 + .../bullet/ContinuousLaserBulletType.java | 6 + .../src/mindustry/entities/comp/UnitComp.java | 2 + .../mindustry/entities/comp/WeaponsComp.java | 2 +- core/src/mindustry/game/DefaultWaves.java | 4 +- core/src/mindustry/game/Rules.java | 2 + core/src/mindustry/game/SectorInfo.java | 8 + core/src/mindustry/game/SpawnGroup.java | 11 +- core/src/mindustry/game/Team.java | 6 +- core/src/mindustry/game/Universe.java | 30 +- core/src/mindustry/io/TypeIO.java | 10 + core/src/mindustry/logic/LAccess.java | 2 + core/src/mindustry/logic/LAssembler.java | 1 + core/src/mindustry/logic/LCanvas.java | 2 +- core/src/mindustry/logic/LExecutor.java | 8 +- core/src/mindustry/maps/SectorDamage.java | 331 +++++++++++++++++- core/src/mindustry/mod/Mods.java | 2 +- core/src/mindustry/net/NetworkIO.java | 16 + core/src/mindustry/type/Sector.java | 28 +- core/src/mindustry/type/UnitType.java | 15 +- core/src/mindustry/ui/dialogs/HostDialog.java | 12 +- core/src/mindustry/ui/dialogs/JoinDialog.java | 12 +- .../ui/dialogs/LaunchLoadoutDialog.java | 12 +- .../mindustry/ui/dialogs/PausedDialog.java | 19 +- .../mindustry/ui/dialogs/PlanetDialog.java | 14 +- .../mindustry/ui/dialogs/ResearchDialog.java | 11 +- .../ui/dialogs/SettingsMenuDialog.java | 1 - .../mindustry/ui/fragments/HudFragment.java | 2 +- .../ui/fragments/MinimapFragment.java | 10 +- .../world/blocks/defense/ForceProjector.java | 8 +- .../world/blocks/defense/MendProjector.java | 8 +- .../blocks/defense/OverdriveProjector.java | 8 +- .../blocks/defense/turrets/ItemTurret.java | 1 - .../blocks/defense/turrets/LiquidTurret.java | 5 +- .../blocks/defense/turrets/PowerTurret.java | 10 + .../world/blocks/defense/turrets/Turret.java | 3 + .../world/blocks/logic/SwitchBlock.java | 5 + gradle.properties | 2 +- tests/src/test/java/SectorTests.java | 4 +- 52 files changed, 665 insertions(+), 117 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 4a854f5c71..1253de6a13 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -478,7 +478,7 @@ requirement.research = Research {0} requirement.capture = Capture {0} bestwave = [lightgray]Best Wave: {0} launch.text = Launch -campaign.multiplayer = While playing multiplayer in campaign, you can only research using items from [accent]your[] sectors, [scarlet]not[] the host's sector that you are on right now.\n\nTo get items to [accent]your[] sectors in multiplayer, use a [accent]launch pad[]. +research.multiplayer = Only the host can research items. uncover = Uncover configure = Configure Loadout #TODO @@ -695,7 +695,6 @@ setting.linear.name = Linear Filtering setting.hints.name = Hints setting.flow.name = Display Resource Flow Rate setting.buildautopause.name = Auto-Pause Building -setting.mapcenter.name = Auto Center Map To Player setting.animatedwater.name = Animated Fluids setting.animatedshields.name = Animated Shields setting.antialias.name = Antialias[lightgray] (requires restart)[] diff --git a/core/assets/maps/craters.msav b/core/assets/maps/craters.msav index b10b354bf009d65f7a94e7eda8c95064d58f0599..04c1aa73d36f10b689c7335883863b6ac7412757 100644 GIT binary patch delta 11429 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 E02sTY6951J delta 11487 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�#pC5AO4ko;X6>z{!ymhJy`1KPyNMr-c>N3ww?RZ zcVXPBHg;))G*R`HHEc30*MeW|&o;J_x&LcoPF3lM@s<0p zGB1AhOpEux{xgoLF1F1&cbvui5_rBxTKtU>dvJgM%kQD3-kU#~f2&>6{$Qq3C(|U2 zMN^x;`o4bdqA;~MO|JgDZCkOu6L(*La6)CWMLEmOm;;3o$BuVYOFcZ`bo$h?4c!)e z1rye(+wSmO>T^=~kZsT=ou&}uJRL5ZnJ?wt>g-*;XFAx)#4O2q)x{$leXaGwWDfgu zrN)-uJ~u^78?%^peC9e8C>^-$Lb3fMbTm3m(`=M;DfUK6qbAfX|Wm2moQePy9+NDpNEUi{7$n#sYIsfK|u#X?a z3v4&^S}vSCUro%c&%km^bgO~kx}Wm}#A#y6*9)`c0C%;xRt=C_;Cn;wB-4DQ91N zU}W{We1B12zvlM2O-U)Pf7PcjU-9?;^;7>;+798grQ7UVE2ae;Yya?<>zn$Ay|4Y* zYQO*Ex-|R1&kOkq_TDe{FZjLMf^Spok-`o0vn}Kv|Ij$p{@7F|-abLb=yO|<>Q-6y z`acsczP8vW)KlM96X$rpyu!}8;`!$67r_BC`x@UDcfEd<$+|rD+H%M3?;n3Q+SguD z^fNcy7W?r*-oxr}PRG_yY=_n^i0^-;v*v<*{>1pG z>iJ)D{&uzRPq}vRbAoj#<8`i0JERUQdA8E0v`nu4A;a_R6WN>(AMyO)e)4`>Rj9@K zl#Kg_b069!|2MyAmXx~szChfiKsWZ#FPk&@>tb)-TJ-9m=#({&9z;6s3p!HFdHw0O z!l@1SVz+cI?)vVt;U8yyhL zL)9u$wR{_FTQ}4{pTAoASgl*(TQNo5`nbTu&UHI_v*)`1u|Hrc!aVo5+?&-Lzd7x= z*$>>R$a;8i+W!6>b8VESENqT;`6GDhq2M9w$^-kqU-(yB(OOe8{X?^iMOzL3SA(RI zJx%|TYu9vr{$%mqc}u;-f4)Ig78FY#KVEPz z`o;YB3u5~fDN~-BA>bIWA(uuldo?ttTnu( zsW4ai)U&^asoC#X?(bHBlKKuI zQJBY3`QXPAjb(kB((e6=dxIrEKa5X}m)X<)db;7QbvLiQF57)>>of6V*F{eTX|7}Z z^CQYdMqlx*<(%2G?rmE6vsUKjo*Si4rvBAo`1*U#rpYt4G(&usJbuAwpJ09b+f}7$ zarYK)Z~Rx_c60Ad%PHrTuSB+3mApUyXpeiw^z=fRZ(0S*KFFqKf8Ts+9_ImzIkI<- zn>zBEG#hRgIB+MpY(AI4al^i+0?&9Ri)ky?htK)%%@NM`;Lg6?PIZaN5?9u@2jnjg z;F~UbJ%6J4dz-$4_ZGg|TP=Bi=bwE&U+$=Dq&`Xd?))MD%IRqJ!gs60U(e}%67c@> zi^&sbWuZ;H)I2>CWx==eZ<10{%hbL7>aG$W&U$x!?_qsX%k;HKqV|={ zr?|kF{w5pq*taY@D}NPxv2(i*_Q29niBhimZ=q09)A0G z?wVLXxuZMNFS32ID4+aRTfd&|C-c7a!g;3~6*haetgqNqP%XaUzvN)Nb;oEg)RwVDgsG}Kuytd=%o4OFQZ37vhw*Y?Xd7+u?cXma`m%eGhD2 z`=9!8yR?US;wICexWc-%6Z4}Zmq`>S-kW`IkF-ZR*YyCmScjSj_kWD%u1+w{s8)XQ z`gnla`UPk574N9>pBFvyIO}52hdSQp%TMs1@Oc#a{;$!w^V-pi8_$UC{l0$D-JL%s zS8Pa4eY`ySx6CQ`g?10_v-~<&`sA(ADJwVIxC3>Jr3)pYjSu spawns = new Seq<>(); private boolean spawning = false; private boolean any = false; + private Tile firstSpawn = null; public WaveSpawner(){ Events.on(WorldLoadEvent.class, e -> reset()); } + @Nullable + public Tile getFirstSpawn(){ + firstSpawn = null; + eachGroundSpawn((cx, cy) -> { + firstSpawn = world.tile(cx, cy); + }); + return firstSpawn; + } + public int countSpawns(){ return spawns.size; } @@ -47,7 +57,7 @@ public class WaveSpawner{ for(SpawnGroup group : state.rules.spawns){ if(group.type == null) continue; - int spawned = group.getUnitsSpawned(state.wave - 1); + int spawned = group.getSpawned(state.wave - 1); if(group.type.flying){ float spread = margin / 1.5f; @@ -89,6 +99,10 @@ public class WaveSpawner{ Time.run(40f, () -> Damage.damage(state.rules.waveTeam, x, y, state.rules.dropZoneRadius, 99999999f, true)); } + public void eachGroundSpawn(Intc2 cons){ + eachGroundSpawn((x, y, shock) -> cons.get(world.toTile(x), world.toTile(y))); + } + private void eachGroundSpawn(SpawnConsumer cons){ for(Tile spawn : spawns){ cons.accept(spawn.worldx(), spawn.worldy(), true); diff --git a/core/src/mindustry/ai/types/FormationAI.java b/core/src/mindustry/ai/types/FormationAI.java index cbe12a565e..d774719cab 100644 --- a/core/src/mindustry/ai/types/FormationAI.java +++ b/core/src/mindustry/ai/types/FormationAI.java @@ -7,6 +7,7 @@ import mindustry.ai.formations.*; import mindustry.entities.units.*; import mindustry.gen.*; import mindustry.type.*; +import mindustry.world.blocks.storage.CoreBlock.*; public class FormationAI extends AIController implements FormationMember{ public Unit leader; @@ -57,6 +58,30 @@ public class FormationAI extends AIController implements FormationMember{ }else{ unit.moveAt(realtarget.sub(unit).limit(type.speed)); } + + if(unit instanceof Minerc mine && leader instanceof Minerc com){ + if(mine.validMine(com.mineTile())){ + mine.mineTile(com.mineTile()); + + CoreBuild core = unit.team.core(); + + if(core != null && com.mineTile().drop() != null && unit.within(core, unit.type().range) && !unit.acceptsItem(com.mineTile().drop())){ + if(core.acceptStack(unit.stack.item, unit.stack.amount, unit) > 0){ + Call.transferItemTo(unit.stack.item, unit.stack.amount, unit.x, unit.y, core); + + unit.clearItem(); + } + } + }else{ + mine.mineTile(null); + } + + } + + if(unit instanceof Builderc build && leader instanceof Builderc com && com.activelyBuilding()){ + build.clearBuilding(); + build.addBuild(com.buildPlan()); + } } @Override diff --git a/core/src/mindustry/ai/types/MinerAI.java b/core/src/mindustry/ai/types/MinerAI.java index a03481768f..d19b8e2c0a 100644 --- a/core/src/mindustry/ai/types/MinerAI.java +++ b/core/src/mindustry/ai/types/MinerAI.java @@ -24,7 +24,9 @@ public class MinerAI extends AIController{ } if(mining){ - targetItem = unit.team.data().mineItems.min(i -> indexer.hasOre(i) && miner.canMine(i), i -> core.items.get(i)); + if(timer.get(timerTarget2, 60 * 4) || targetItem == null){ + targetItem = unit.team.data().mineItems.min(i -> indexer.hasOre(i) && miner.canMine(i), i -> core.items.get(i)); + } //core full of the target item, do nothing if(targetItem != null && core.acceptStack(targetItem, 1, unit) == 0){ diff --git a/core/src/mindustry/ai/types/RepairAI.java b/core/src/mindustry/ai/types/RepairAI.java index 5f021ae828..cb60a3bfc9 100644 --- a/core/src/mindustry/ai/types/RepairAI.java +++ b/core/src/mindustry/ai/types/RepairAI.java @@ -23,7 +23,7 @@ public class RepairAI extends AIController{ } if(target != null){ - if(!target.within(unit, unit.type().range * 0.65f)){ + if(!target.within(unit, unit.type().range * 0.65f) && target instanceof Building){ moveTo(target, unit.type().range * 0.65f); } @@ -33,12 +33,14 @@ public class RepairAI extends AIController{ @Override protected void updateTargeting(){ - target = Units.findDamagedTile(unit.team, unit.x, unit.y); + Building target = Units.findDamagedTile(unit.team, unit.x, unit.y); if(target instanceof ConstructBuild) target = null; if(target == null){ super.updateTargeting(); + }else{ + this.target = target; } } diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 05ed572f7e..d18b011bea 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1713,7 +1713,7 @@ public class Blocks implements ContentList{ despawnEffect = Fx.instBomb; trailSpacing = 20f; damage = 1350; - tileDamageMultiplier = 0.5f; + tileDamageMultiplier = 0.3f; speed = brange; hitShake = 6f; ammoMultiplier = 1f; diff --git a/core/src/mindustry/content/Bullets.java b/core/src/mindustry/content/Bullets.java index 221dc44e8d..e2d42c0ef0 100644 --- a/core/src/mindustry/content/Bullets.java +++ b/core/src/mindustry/content/Bullets.java @@ -510,7 +510,7 @@ public class Bullets implements ContentList{ speed = 4f; knockback = 1.3f; puddleSize = 8f; - damage = 6f; + damage = 5f; drag = 0.001f; ammoMultiplier = 2f; statusDuration = 60f * 4f; diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index df536552df..4d95b22820 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -5,10 +5,12 @@ import arc.math.*; import arc.util.*; import mindustry.annotations.Annotations.*; import mindustry.core.GameState.*; +import mindustry.ctype.*; import mindustry.game.EventType.*; import mindustry.game.*; import mindustry.game.Teams.*; import mindustry.gen.*; +import mindustry.maps.*; import mindustry.type.*; import mindustry.type.Weather.*; import mindustry.world.*; @@ -84,20 +86,41 @@ public class Logic implements ApplicationListener{ Events.on(LaunchItemEvent.class, e -> state.secinfo.handleItemExport(e.stack)); //when loading a 'damaged' sector, propagate the damage - Events.on(WorldLoadEvent.class, e -> { + Events.on(SaveLoadEvent.class, e -> { if(state.isCampaign()){ - long seconds = state.rules.sector.getSecondsPassed(); CoreBuild core = state.rules.defaultTeam.core(); - //THE WAVES NEVER END - state.rules.waves = true; - //apply fractional damage based on how many turns have passed for this sector - //float turnsPassed = seconds / (turnDuration / 60f); + //how much wave time has passed + int wavesPassed = state.rules.sector.getWavesPassed(); - //TODO sector damage disabled for now - //if(state.rules.sector.hasWaves() && turnsPassed > 0 && state.rules.sector.hasBase()){ - // SectorDamage.apply(turnsPassed / sectorDestructionTurns); - //} + //reset passed waves + state.rules.sector.setWavesPassed(0); + + //wave has passed, remove all enemies, they are assumed to be dead + if(wavesPassed > 0){ + Groups.unit.each(u -> { + if(u.team == state.rules.waveTeam){ + u.remove(); + } + }); + } + + if(wavesPassed > 0){ + //simulate wave counter moving forward + state.wave += wavesPassed; + state.wavetime = state.rules.waveSpacing; + } + + //reset damage display + state.rules.sector.setDamage(0f); + + //simulate damage if applicable + if(wavesPassed > 0){ + SectorDamage.applyCalculatedDamage(wavesPassed); + } + + //waves depend on attack status. + state.rules.waves = state.rules.sector.isUnderAttack(); //add resources based on turns passed if(state.rules.sector.save != null && core != null){ @@ -121,7 +144,9 @@ public class Logic implements ApplicationListener{ state.rules.sector.setSecondsPassed(0); } + }); + Events.on(WorldLoadEvent.class, e -> { //enable infinite ammo for wave team by default state.rules.waveTeam.rules().infiniteAmmo = true; @@ -129,6 +154,13 @@ public class Logic implements ApplicationListener{ Core.settings.manualSave(); }); + //sync research + Events.on(ResearchEvent.class, e -> { + if(net.server()){ + Call.researched(e.content); + } + }); + } /** Adds starting items, resets wave time, and sets state to playing. */ @@ -199,8 +231,6 @@ public class Logic implements ApplicationListener{ state.rules.waves = false; } - //TODO capturing is disabled - /* //if there's a "win" wave and no enemies are present, win automatically if(state.rules.waves && state.enemies == 0 && state.rules.winWave > 0 && state.wave >= state.rules.winWave && !spawner.isSpawning()){ //the sector has been conquered - waves get disabled @@ -213,7 +243,7 @@ public class Logic implements ApplicationListener{ if(!headless){ control.saves.saveSector(state.rules.sector); } - }*/ + } }else{ if(!state.rules.attackMode && state.teams.playerCores().size == 0 && !state.gameOver){ state.gameOver = true; @@ -266,6 +296,15 @@ public class Logic implements ApplicationListener{ netClient.setQuiet(); } + //called when the remote server researches something + @Remote + public static void researched(Content content){ + if(!(content instanceof UnlockableContent u)) return; + + state.rules.researched.add(u.name); + ui.hudfrag.showUnlock(u); + } + @Override public void dispose(){ //save the settings before quitting diff --git a/core/src/mindustry/ctype/UnlockableContent.java b/core/src/mindustry/ctype/UnlockableContent.java index f6e6d0a2dc..21b72374ec 100644 --- a/core/src/mindustry/ctype/UnlockableContent.java +++ b/core/src/mindustry/ctype/UnlockableContent.java @@ -95,16 +95,17 @@ public abstract class UnlockableContent extends MappableContent{ } } - public final boolean unlocked(){ + public boolean unlocked(){ + if(net.client()) return state.rules.researched.contains(name); return unlocked || alwaysUnlocked; } /** @return whether this content is unlocked, or the player is in a custom (non-campaign) game. */ - public final boolean unlockedNow(){ - return unlocked || alwaysUnlocked || !state.isCampaign(); + public boolean unlockedNow(){ + return unlocked() || !state.isCampaign(); } - public final boolean locked(){ + public boolean locked(){ return !unlocked(); } } diff --git a/core/src/mindustry/editor/WaveGraph.java b/core/src/mindustry/editor/WaveGraph.java index 14b2416085..2436c62c2a 100644 --- a/core/src/mindustry/editor/WaveGraph.java +++ b/core/src/mindustry/editor/WaveGraph.java @@ -154,7 +154,7 @@ public class WaveGraph extends Table{ int sum = 0; for(SpawnGroup spawn : groups){ - int spawned = spawn.getUnitsSpawned(i); + int spawned = spawn.getSpawned(i); values[index][spawn.type.id] += spawned; if(spawned > 0){ used.add(spawn.type); diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index 0c3a605f1b..aafbb42504 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -137,6 +137,15 @@ public abstract class BulletType extends Content{ this(1f, 1f); } + /** @return estimated damage per shot. this can be very inaccurate. */ + public float estimateDPS(){ + float sum = damage + splashDamage*0.75f; + if(fragBullet != null && fragBullet != this){ + sum += fragBullet.estimateDPS() * fragBullets / 2f; + } + return sum; + } + /** Returns maximum distance the bullet this bullet type has can travel. */ public float range(){ return Math.max(speed * lifetime * (1f - drag), range); diff --git a/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java b/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java index a862671040..4c52105b26 100644 --- a/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java +++ b/core/src/mindustry/entities/bullet/ContinuousLaserBulletType.java @@ -44,6 +44,12 @@ public class ContinuousLaserBulletType extends BulletType{ this(0); } + @Override + public float estimateDPS(){ + //assume firing duration is about 100 by default, may not be accurate there's no way of knowing in this method + return damage * 100f / 5f; + } + @Override public float range(){ return length; diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 1cf0f7e216..605e2d1d1e 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -88,6 +88,8 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I case rotation -> rotation; case health -> health; case maxHealth -> maxHealth; + case ammo -> state.rules.unitAmmo ? type.ammoCapacity : ammo; + case ammoCapacity -> type.ammoCapacity; case x -> x; case y -> y; case team -> team.id; diff --git a/core/src/mindustry/entities/comp/WeaponsComp.java b/core/src/mindustry/entities/comp/WeaponsComp.java index d891dbc1e4..dec0105c14 100644 --- a/core/src/mindustry/entities/comp/WeaponsComp.java +++ b/core/src/mindustry/entities/comp/WeaponsComp.java @@ -166,7 +166,7 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc, Velc, Statusc{ Weapon weapon = mount.weapon; float baseX = this.x, baseY = this.y; - boolean delay = weapon.firstShotDelay > 0f; + boolean delay = weapon.firstShotDelay + weapon.shotDelay > 0f; (delay ? weapon.chargeSound : weapon.shootSound).at(x, y, Mathf.random(0.8f, 1.0f)); diff --git a/core/src/mindustry/game/DefaultWaves.java b/core/src/mindustry/game/DefaultWaves.java index 0ce0d3a6a2..12d1d28dfe 100644 --- a/core/src/mindustry/game/DefaultWaves.java +++ b/core/src/mindustry/game/DefaultWaves.java @@ -290,7 +290,7 @@ public class DefaultWaves{ begin = f; end = f + next >= cap ? never : f + next; max = 14; - unitScaling = rand.random(1f, 2f); + unitScaling = rand.random(1f, 3f); shields = shieldAmount; shieldScaling = shieldsPerWave; spacing = space; @@ -329,7 +329,7 @@ public class DefaultWaves{ while(step <= cap){ createProgression.get(step); - step += (int)(rand.random(12, 25) * Mathf.lerp(1f, 0.4f, difficulty)); + step += (int)(rand.random(13, 25) * Mathf.lerp(1f, 0.5f, difficulty)); } int bossWave = (int)(rand.random(30, 60) * Mathf.lerp(1f, 0.7f, difficulty)); diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index a101fe8592..329e69c92a 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -82,6 +82,8 @@ public class Rules{ public Seq weather = new Seq<>(1); /** Blocks that cannot be placed. */ public ObjectSet bannedBlocks = new ObjectSet<>(); + /** Unlocked content names. Only used in multiplayer when the campaign is enabled. */ + public ObjectSet researched = new ObjectSet<>(); /** Whether ambient lighting is enabled. */ public boolean lighting = false; /** Whether enemy lighting is visible. diff --git a/core/src/mindustry/game/SectorInfo.java b/core/src/mindustry/game/SectorInfo.java index b66dc5bf95..8e7f73a256 100644 --- a/core/src/mindustry/game/SectorInfo.java +++ b/core/src/mindustry/game/SectorInfo.java @@ -5,6 +5,7 @@ import arc.struct.*; import arc.util.*; import mindustry.content.*; import mindustry.ctype.*; +import mindustry.maps.*; import mindustry.type.*; import mindustry.world.*; import mindustry.world.blocks.storage.CoreBlock.*; @@ -38,6 +39,10 @@ public class SectorInfo{ public @Nullable Sector destination; /** Resources known to occur at this sector. */ public Seq resources = new Seq<>(); + + /** Special variables for simulation. */ + public float sumHealth, sumRps, sumDps, waveHealthBase, waveHealthSlope, waveDpsBase, waveDpsSlope; + /** Time spent at this sector. Do not use unless you know what you're doing. */ public transient float internalTimeSpent; @@ -99,6 +104,9 @@ public class SectorInfo{ //update sector's internal time spent counter state.rules.sector.setTimeSpent(internalTimeSpent); + state.rules.sector.setUnderAttack(state.rules.waves); + + SectorDamage.writeParameters(this); } /** Update averages of various stats, updates some special sector logic. diff --git a/core/src/mindustry/game/SpawnGroup.java b/core/src/mindustry/game/SpawnGroup.java index f9ae7c74d3..92ba6811ea 100644 --- a/core/src/mindustry/game/SpawnGroup.java +++ b/core/src/mindustry/game/SpawnGroup.java @@ -52,8 +52,8 @@ public class SpawnGroup implements Serializable{ //serialization use only } - /** Returns the amount of units spawned on a specific wave. */ - public int getUnitsSpawned(int wave){ + /** @return amount of units spawned on a specific wave. */ + public int getSpawned(int wave){ if(spacing == 0) spacing = 1; if(wave < begin || wave > end || (wave - begin) % spacing != 0){ return 0; @@ -61,6 +61,11 @@ public class SpawnGroup implements Serializable{ return Math.min(unitAmount + (int)(((wave - begin) / spacing) / unitScaling), max); } + /** @return amount of shields each unit has at a specific wave. */ + public float getShield(int wave){ + return Math.max(shields + shieldScaling*(wave - begin), 0); + } + /** * Creates a unit, and assigns correct values based on this group's data. * This method does not add() the unit. @@ -76,7 +81,7 @@ public class SpawnGroup implements Serializable{ unit.addItem(items.item, items.amount); } - unit.shield(Math.max(shields + shieldScaling*(wave - begin), 0)); + unit.shield = getShield(wave); return unit; } diff --git a/core/src/mindustry/game/Team.java b/core/src/mindustry/game/Team.java index 1234c7b2d7..cbed06f4e7 100644 --- a/core/src/mindustry/game/Team.java +++ b/core/src/mindustry/game/Team.java @@ -31,9 +31,9 @@ public class Team implements Comparable{ Color.valueOf("ffd37f"), Color.valueOf("eab678"), Color.valueOf("d4816b")), crux = new Team(2, "crux", Color.valueOf("f25555"), Color.valueOf("fc8e6c"), Color.valueOf("f25555"), Color.valueOf("a04553")), - green = new Team(3, "green", Color.valueOf("4dd98b")), - purple = new Team(4, "purple", Color.valueOf("9a4bdf")), - blue = new Team(5, "blue", Color.royal.cpy()); + green = new Team(3, "green", Color.valueOf("54d67d")), + purple = new Team(4, "purple", Color.valueOf("995bb0")), + blue = new Team(5, "blue", Color.valueOf("5a4deb")); static{ Mathf.rand.setSeed(8); diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 892b93b731..82b53ce604 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -6,6 +6,7 @@ import arc.struct.*; import arc.util.*; import mindustry.content.*; import mindustry.game.EventType.*; +import mindustry.maps.*; import mindustry.type.*; import mindustry.world.blocks.storage.*; @@ -55,7 +56,7 @@ public class Universe{ /** @return sectors attacked on the current planet, minus the ones that are being played on right now. */ public Seq getAttacked(Planet planet){ - return planet.sectors.select(s -> s.hasWaves() && s.hasBase() && !s.isBeingPlayed() && s.getSecondsPassed() > 1); + return planet.sectors.select(s -> s.isUnderAttack() && s.hasBase() && !s.isBeingPlayed() && s.getWavesPassed() > 0); } /** Update planet rotations, global time and relevant state. */ @@ -138,11 +139,23 @@ public class Universe{ //increment seconds passed for this sector by the time that just passed with this turn if(!sector.isBeingPlayed()){ - sector.setSecondsPassed(sector.getSecondsPassed() + actuallyPassed); + int secPassed = sector.getSecondsPassed() + actuallyPassed; + + sector.setSecondsPassed(secPassed); + + boolean attacked = sector.isUnderAttack(); + + int wavesPassed = (int)(secPassed*60f / sector.save.meta.rules.waveSpacing); + float damage = attacked ? SectorDamage.getDamage(sector.save.meta.secinfo, sector.save.meta.rules.waveSpacing, sector.save.meta.wave, wavesPassed) : 0f; + + if(attacked){ + sector.setWavesPassed(wavesPassed); + } + + sector.setDamage(damage); - //TODO sector damage disabled for now //check if the sector has been attacked too many times... - /*if(sector.hasBase() && sector.hasWaves() && sector.getSecondsPassed() * 60f > turnDuration * sectorDestructionTurns){ + if(attacked && damage >= 0.999f){ //fire event for losing the sector Events.fire(new SectorLoseEvent(sector)); @@ -152,7 +165,14 @@ public class Universe{ //clear recieved sector.setExtraItems(new ItemSeq()); sector.save = null; - }*/ + sector.setDamage(0f); + }else if(attacked && wavesPassed > 0 && sector.save.meta.wave + wavesPassed >= sector.save.meta.rules.winWave && !sector.hasEnemyBase()){ + //autocapture the sector + sector.setUnderAttack(false); + + //fire the event + Events.fire(new SectorCaptureEvent(state.rules.sector)); + } } //export to another sector diff --git a/core/src/mindustry/io/TypeIO.java b/core/src/mindustry/io/TypeIO.java index 669cd65d53..bba4ffeb0a 100644 --- a/core/src/mindustry/io/TypeIO.java +++ b/core/src/mindustry/io/TypeIO.java @@ -450,6 +450,16 @@ public class TypeIO{ return color.set(read.i()); } + public static void writeContent(Writes write, Content cont){ + write.b(cont.getContentType().ordinal()); + write.s(cont.id); + } + + public static Content readContent(Reads read){ + byte id = read.b(); + return content.getByID(ContentType.all[id], read.s()); + } + public static void writeLiquid(Writes write, Liquid liquid){ write.s(liquid == null ? -1 : liquid.id); } diff --git a/core/src/mindustry/logic/LAccess.java b/core/src/mindustry/logic/LAccess.java index 5dc881a778..0d678554d1 100644 --- a/core/src/mindustry/logic/LAccess.java +++ b/core/src/mindustry/logic/LAccess.java @@ -15,6 +15,8 @@ public enum LAccess{ powerNetCapacity, powerNetIn, powerNetOut, + ammo, + ammoCapacity, health, maxHealth, heat, diff --git a/core/src/mindustry/logic/LAssembler.java b/core/src/mindustry/logic/LAssembler.java index 4f72d121aa..f353a8c38c 100644 --- a/core/src/mindustry/logic/LAssembler.java +++ b/core/src/mindustry/logic/LAssembler.java @@ -191,6 +191,7 @@ public class LAssembler{ try{ double value = Double.parseDouble(symbol); + if(Double.isNaN(value) || Double.isInfinite(value)) value = 0; //this creates a hidden const variable with the specified value String key = "___" + value; return putConst(key, value).id; diff --git a/core/src/mindustry/logic/LCanvas.java b/core/src/mindustry/logic/LCanvas.java index ed98bee8ff..e16aab6621 100644 --- a/core/src/mindustry/logic/LCanvas.java +++ b/core/src/mindustry/logic/LCanvas.java @@ -305,7 +305,7 @@ public class LCanvas extends Table{ statements.finishLayout(); } }); - }).growX(); + }).growX().height(38); row(); diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index a8c5de8a9d..fee780e145 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -110,12 +110,12 @@ public class LExecutor{ public double num(int index){ Var v = vars[index]; - return v.isobj ? v.objval != null ? 1 : 0 : v.numval; + return v.isobj ? v.objval != null ? 1 : 0 : Double.isNaN(v.numval) || Double.isInfinite(v.numval) ? 0 : v.numval; } public float numf(int index){ Var v = vars[index]; - return v.isobj ? v.objval != null ? 1 : 0 : (float)v.numval; + return v.isobj ? v.objval != null ? 1 : 0 : Double.isNaN(v.numval) || Double.isInfinite(v.numval) ? 0 : (float)v.numval; } public int numi(int index){ @@ -129,7 +129,7 @@ public class LExecutor{ public void setnum(int index, double value){ Var v = vars[index]; if(v.constant) return; - v.numval = value; + v.numval = Double.isNaN(value) || Double.isInfinite(value) ? 0 : 0; v.objval = null; v.isobj = false; } @@ -737,7 +737,7 @@ public class LExecutor{ v.objval = f.objval; v.isobj = true; }else{ - v.numval = f.numval; + v.numval = Double.isNaN(f.numval) || Double.isInfinite(f.numval) ? 0 : f.numval; v.isobj = false; } } diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 5f4e267d74..b8afb42688 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -3,11 +3,18 @@ package mindustry.maps; import arc.math.*; import arc.math.geom.*; import arc.struct.*; +import arc.util.*; import mindustry.ai.*; import mindustry.content.*; import mindustry.entities.*; +import mindustry.entities.abilities.*; +import mindustry.game.*; import mindustry.gen.*; +import mindustry.logic.*; import mindustry.world.*; +import mindustry.world.blocks.defense.*; +import mindustry.world.blocks.defense.turrets.*; +import mindustry.world.blocks.defense.turrets.Turret.*; import mindustry.world.blocks.storage.*; import static mindustry.Vars.*; @@ -15,6 +22,264 @@ import static mindustry.Vars.*; public class SectorDamage{ //direct damage is for testing only private static final boolean direct = false, rubble = true; + private static final int maxWavesSimulated = 50; + + /** @return calculated capture progress of the enemy */ + public static float getDamage(SectorInfo info, float waveSpace, int wave, int wavesPassed){ + float health = info.sumHealth; + + //this approach is O(n), it simulates every wave passing. + //other approaches can assume all the waves come as one, but that's not as fair. + if(wavesPassed > 0){ + int waveBegin = wave; + int waveEnd = wave + wavesPassed; + + //do not simulate every single wave if there's too many + if(wavesPassed > maxWavesSimulated){ + waveBegin = waveEnd - maxWavesSimulated; + } + + for(int i = waveBegin; i <= waveEnd; i++){ + + float efficiency = health / info.sumHealth; + float dps = info.sumDps * efficiency; + float rps = info.sumRps * efficiency; + + float enemyDps = info.waveDpsBase + info.waveDpsSlope * (i); + float enemyHealth = info.waveHealthBase + info.waveHealthSlope * (i); + + //happens due to certain regressions + if(enemyHealth < 0 || enemyDps < 0) continue; + + //calculate time to destroy both sides + float timeDestroyEnemy = dps <= 0.0001f ? Float.POSITIVE_INFINITY : enemyHealth / dps; //if dps == 0, this is infinity + float timeDestroyBase = health / (enemyDps - rps); //if regen > enemyDps this is negative + + //sector is lost, enemy took too long. + if(timeDestroyEnemy > timeDestroyBase){ + health = 0f; + break; + } + + //otherwise, the enemy shoots for timeDestroyEnemy seconds, so calculate damage taken + float damageTaken = timeDestroyEnemy * (enemyDps - rps); + + //damage the base. + health -= damageTaken; + + //regen health after wave. + health = Math.min(health + rps / 60f * waveSpace, info.sumHealth); + } + } + + return 1f - Mathf.clamp(health / info.sumHealth); + } + + /** Applies wave damage based on sector parameters. */ + public static void applyCalculatedDamage(int wavesPassed){ + //calculate base damage fraction + float damage = getDamage(state.secinfo, state.rules.waveSpacing, state.wave, wavesPassed); + + //scaled damage has a power component to make it seem a little more realistic (as systems fail, enemy capturing gets easier and easier) + float scaled = Mathf.pow(damage, 1.5f); + + //apply damage to units + float unitDamage = damage * state.secinfo.sumHealth; + Tile spawn = spawner.getFirstSpawn(); + + //damage only units near the spawn point + if(spawn != null){ + Seq allies = new Seq<>(); + for(Unit ally : Groups.unit){ + if(ally.team == state.rules.defaultTeam && ally.within(spawn, state.rules.dropZoneRadius * 2.5f)){ + allies.add(ally); + } + } + + allies.sort(u -> u.dst2(spawn)); + + //damage units one by one, not uniformly + for(var u : allies){ + if(u.health < unitDamage){ + u.remove(); + unitDamage -= u.health; + }else{ + u.health -= unitDamage; + break; + } + } + } + + //finally apply scaled damage + apply(scaled); + } + + /** Calculates damage simulation parameters before a game is saved. */ + public static void writeParameters(SectorInfo info){ + Building core = state.rules.defaultTeam.core(); + Seq spawns = new Seq<>(); + spawner.eachGroundSpawn((x, y) -> spawns.add(world.tile(x, y))); + + if(core == null || spawns.isEmpty()) return; + + Tile start = spawns.first(); + + Time.mark(); + var field = pathfinder.getField(state.rules.waveTeam, Pathfinder.costGround, Pathfinder.fieldCore); + Seq path = new Seq<>(); + boolean found = false; + + if(field != null && field.weights != null){ + int[][] weights = field.weights; + int count = 0; + Tile current = start; + while(count < world.width() * world.height()){ + int minCost = Integer.MAX_VALUE; + int cx = current.x, cy = current.y; + for(Point2 p : Geometry.d4){ + int nx = cx + p.x, ny = cy + p.y; + + Tile other = world.tile(nx, ny); + if(other != null && weights[nx][ny] < minCost && weights[nx][ny] != -1){ + minCost = weights[nx][ny]; + current = other; + } + } + + path.add(current); + + if(current.build == core){ + found = true; + break; + } + + count ++; + } + } + + if(!found){ + path = Astar.pathfind(start, core.tile, SectorDamage::cost, t -> !(t.block().isStatic() && t.solid())); + } + + //create sparse tile array for fast range query + int sparseSkip = 6; + //TODO if this is slow, use a quadtree + Seq sparse = new Seq<>(path.size / sparseSkip + 1); + + for(int i = 0; i < path.size; i++){ + if(i % sparseSkip == 0){ + sparse.add(path.get(i)); + } + } + + //regen is in health per second + //dps is per second + float sumHealth = 0f, sumRps = 0f, sumDps = 0f; + float totalPathBuild = 0; + + //first, calculate the total health of blocks in the path + + for(Tile t : path){ + int radius = 2; + + //radius is square. + for(int dx = -radius; dx <= radius; dx++){ + for(int dy = -radius; dy <= radius; dy++){ + int wx = dx + t.x, wy = dy + t.y; + if(wx >= 0 && wy >= 0 && wx < world.width() && wy < world.height()){ + Tile tile = world.rawTile(wx, wy); + + if(tile.build != null && tile.team() == state.rules.defaultTeam){ + //health is divided by block size, because multiblocks are counted multiple times. + sumHealth += tile.build.health / tile.block().size; + totalPathBuild += 1f / tile.block().size; + } + } + } + } + } + + float avgHealth = totalPathBuild <= 1 ? sumHealth : sumHealth / totalPathBuild; + + //block dps + regen + extra health/shields + for(Building build : Groups.build){ + float e = build.efficiency(); + if(e > 0.08f){ + if(build.team == state.rules.defaultTeam && build instanceof Ranged ranged && sparse.contains(t -> t.within(build, ranged.range()))){ + if(build.block instanceof Turret t && build instanceof TurretBuild b && b.hasAmmo()){ + sumDps += t.shots / t.reloadTime * 60f * b.peekAmmo().estimateDPS() * e; + } + + if(build.block instanceof MendProjector m){ + sumRps += m.healPercent / m.reload * avgHealth * 60f / 100f * e; + } + + if(build.block instanceof ForceProjector f){ + sumHealth += f.breakage * e; + sumRps += 1f * e; + } + } + } + } + + float curEnemyHealth = 0f, curEnemyDps = 0f; + + //unit regen + health + dps + for(Unit unit : Groups.unit){ + //skip player + if(unit.isPlayer()) continue; + + if(unit.team == state.rules.defaultTeam){ + sumHealth += unit.health + unit.shield; + sumDps += unit.type().dpsEstimate; + if(unit.abilities.find(a -> a instanceof HealFieldAbility) instanceof HealFieldAbility h){ + sumRps += h.amount / h.reload * 60f; + } + }else{ + curEnemyDps += unit.type().dpsEstimate; + curEnemyHealth += unit.health; + } + } + + //calculate DPS and health for the next few waves and store in list + var reg = new LinearRegression(); + Seq waveDps = new Seq<>(), waveHealth = new Seq<>(); + + for(int wave = state.wave, i = 0; i < 3; wave += (1 + i++)){ + float sumWaveDps = 0f, sumWaveHealth = 0f; + + //first wave has to take into account current dps + if(wave == state.wave){ + sumWaveDps += curEnemyDps; + sumWaveHealth += curEnemyHealth; + } + + for(SpawnGroup group : state.rules.spawns){ + int spawned = group.getSpawned(wave); + if(spawned <= 0) continue; + sumWaveHealth += spawned * (group.getShield(wave) + group.type.health); + sumWaveDps += spawned * group.type.dpsEstimate; + } + waveDps.add(new Vec2(wave, sumWaveDps)); + waveHealth.add(new Vec2(wave, sumWaveHealth)); + } + + //calculate linear regression of the wave data and store it + reg.calculate(waveHealth); + info.waveHealthBase = reg.intercept; + info.waveHealthSlope = reg.slope; + + reg.calculate(waveDps); + info.waveDpsBase = reg.intercept; + info.waveDpsSlope = reg.slope; + + info.sumHealth = sumHealth; + info.sumDps = sumDps; + info.sumRps = sumRps; + + //finally, find an equation to put it all together and produce a 0-1 number + //due to the way most defenses are structured, this number will likely need a ^4 power or so + } public static void apply(float fraction){ Tiles tiles = world.tiles; @@ -35,22 +300,62 @@ public class SectorDamage{ if(core != null && !frontier.isEmpty()){ for(Tile spawner : frontier){ //find path from spawn to core - //TODO this is broken Seq path = Astar.pathfind(spawner, core.tile, SectorDamage::cost, t -> !(t.block().isStatic() && t.solid())); - int amount = (int)(path.size * fraction); - for(int i = 0; i < amount; i++){ - Tile t = path.get(i); - Geometry.circle(t.x, t.y, tiles.width, tiles.height, 5, (cx, cy) -> { - Tile other = tiles.getn(cx, cy); - //just remove all the buildings in the way - as long as they're not cores! - if(other.build != null && other.team() == state.rules.defaultTeam && !(other.block() instanceof CoreBlock)){ - if(rubble && !other.floor().solid && !other.floor().isLiquid && Mathf.chance(0.4)){ - Effect.rubble(other.build.x, other.build.y, other.block().size); - } + Seq removal = new Seq<>(); - other.remove(); + int radius = 3; + + //only penetrate a certain % by health, not by distance + float totalHealth = path.sumf(t -> { + float s = 0; + for(int dx = -radius; dx <= radius; dx++){ + for(int dy = -radius; dy <= radius; dy++){ + int wx = dx + t.x, wy = dy + t.y; + if(wx >= 0 && wy >= 0 && wx < world.width() && wy < world.height() && Mathf.within(dx, dy, radius)){ + Tile other = world.rawTile(wx, wy); + s += other.team() == state.rules.defaultTeam ? other.build.health / other.block().size : 0f; + } } - }); + } + return s; + }); + float targetHealth = totalHealth * fraction; + float healthCount = 0; + + out: + for(int i = 0; i < path.size && healthCount < targetHealth; i++){ + Tile t = path.get(i); + + for(int dx = -radius; dx <= radius; dx++){ + for(int dy = -radius; dy <= radius; dy++){ + int wx = dx + t.x, wy = dy + t.y; + if(wx >= 0 && wy >= 0 && wx < world.width() && wy < world.height() && Mathf.within(dx, dy, radius)){ + Tile other = world.rawTile(wx, wy); + + //just remove all the buildings in the way - as long as they're not cores + if(other.build != null && other.team() == state.rules.defaultTeam && !(other.block() instanceof CoreBlock)){ + if(rubble && !other.floor().solid && !other.floor().isLiquid && Mathf.chance(0.4)){ + Effect.rubble(other.build.x, other.build.y, other.block().size); + } + + //since the whole block is removed, count the whole health + healthCount += other.build.health; + + removal.add(other.build); + + if(healthCount >= targetHealth){ + break out; + } + } + } + } + } + } + + for(Building r : removal){ + if(r.tile.build == r){ + r.tile.remove(); + } } } } diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index 12c33c7480..a596f3e7ae 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -629,7 +629,7 @@ public class Mods implements Loadable{ } //make sure the main class exists before loading it; if it doesn't just don't put it there - if(mainFile.exists()){ + if(mainFile.exists() && Core.settings.getBool("mod-" + meta.name.toLowerCase().replace(" ", "-") + "-enabled", true)){ //mobile versions don't support class mods if(ios){ throw new IllegalArgumentException("Java class mods are not supported on iOS."); diff --git a/core/src/mindustry/net/NetworkIO.java b/core/src/mindustry/net/NetworkIO.java index 3a32d5cb6b..acaf9f9640 100644 --- a/core/src/mindustry/net/NetworkIO.java +++ b/core/src/mindustry/net/NetworkIO.java @@ -3,7 +3,9 @@ package mindustry.net; import arc.*; import arc.util.*; import arc.util.io.*; +import mindustry.content.*; import mindustry.core.*; +import mindustry.ctype.*; import mindustry.game.*; import mindustry.gen.*; import mindustry.io.*; @@ -21,6 +23,18 @@ public class NetworkIO{ public static void writeWorld(Player player, OutputStream os){ try(DataOutputStream stream = new DataOutputStream(os)){ + //write all researched content to rules if hosting + if(state.isCampaign()){ + state.rules.researched.clear(); + for(ContentType type : ContentType.all){ + for(Content c : content.getBy(type)){ + if(c instanceof UnlockableContent u && u.unlocked() && TechTree.get(u) != null){ + state.rules.researched.add(u.name); + } + } + } + } + stream.writeUTF(JsonIO.write(state.rules)); SaveIO.getSaveWriter().writeStringMap(stream, state.map.tags); @@ -44,6 +58,8 @@ public class NetworkIO{ state.rules = JsonIO.read(Rules.class, stream.readUTF()); state.map = new Map(SaveIO.getSaveWriter().readStringMap(stream)); + Log.info("READ RULES: @", state.rules.researched); + state.wave = stream.readInt(); state.wavetime = stream.readFloat(); diff --git a/core/src/mindustry/type/Sector.java b/core/src/mindustry/type/Sector.java index 4c1df28945..f692293309 100644 --- a/core/src/mindustry/type/Sector.java +++ b/core/src/mindustry/type/Sector.java @@ -103,9 +103,22 @@ public class Sector{ return save != null && !save.meta.rules.waves; } - /** @return whether waves are present - if true, any bases here will be attacked. */ - public boolean hasWaves(){ - return save != null && save.meta.rules.waves; + /** @return whether waves are present - if true, any bases here will be attacked. + * only applicable to sectors with active player bases. */ + public boolean isUnderAttack(){ + return hasBase() && Core.settings.getBool(key("under-attack"), true); + } + + public void setUnderAttack(boolean underAttack){ + Core.settings.put(key("under-attack"), underAttack); + } + + public void setWavesPassed(int waves){ + put("waves-passed", waves); + } + + public int getWavesPassed(){ + return Core.settings.getInt(key("waves-passed"), 0); } public boolean hasSave(){ @@ -238,6 +251,15 @@ public class Sector{ return Core.settings.getInt(key("spawn-position"), Point2.pack(world.width() / 2, world.height() / 2)); } + /** @return sector damage from enemy, 0 to 1 */ + public float getDamage(){ + return Core.settings.getFloat(key("damage"), 0f); + } + + public void setDamage(float damage){ + put("damage", damage); + } + /** @return time spent in this sector this turn in ticks. */ public float getTimeSpent(){ //return currently counting time spent if being played on diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 661e735fa7..68fdd6837e 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -79,6 +79,8 @@ public class UnitType extends UnlockableContent{ public int mineTier = -1; public float buildSpeed = 1f, mineSpeed = 1f; + /** This is a VERY ROUGH estimate of unit DPS. */ + public float dpsEstimate = -1; public float clipSize = -1; public boolean canDrown = true; public float engineOffset = 5f, engineSize = 2.5f; @@ -266,6 +268,17 @@ public class UnitType extends UnlockableContent{ ammoCapacity = Math.max(1, (int)(shotsPerSecond * targetSeconds)); } + + //calculate estimated DPS for one target based on weapons + if(dpsEstimate < 0){ + dpsEstimate = weapons.sumf(w -> (w.bullet.estimateDPS() / w.reload) * w.shots * 60f); + + //suicide enemy + if(weapons.contains(w -> w.bullet.killShooter)){ + //scale down DPS to be insignificant + dpsEstimate /= 100f; + } + } } @CallSuper @@ -436,7 +449,7 @@ public class UnitType extends UnlockableContent{ applyColor(unit); //draw back items - if(unit.hasItem() && unit.itemTime > 0.01f){ + if(unit.item() != null && unit.itemTime > 0.01f){ float size = (itemSize + Mathf.absin(Time.time(), 5f, 1f)) * unit.itemTime; Draw.mixcol(Pal.accent, Mathf.absin(Time.time(), 5f, 0.5f)); diff --git a/core/src/mindustry/ui/dialogs/HostDialog.java b/core/src/mindustry/ui/dialogs/HostDialog.java index 25300fc0b1..1282d47b7d 100644 --- a/core/src/mindustry/ui/dialogs/HostDialog.java +++ b/core/src/mindustry/ui/dialogs/HostDialog.java @@ -76,13 +76,15 @@ public class HostDialog extends BaseDialog{ platform.updateLobby(); }); })); + + if(Version.modifier.contains("beta") || Version.modifier.contains("alpha")){ + Core.settings.put("publichost", false); + platform.updateLobby(); + Core.settings.getBoolOnce("betapublic", () -> ui.showInfo("@public.beta")); + } } - if(Version.modifier.contains("beta")){ - Core.settings.put("publichost", false); - platform.updateLobby(); - Core.settings.getBoolOnce("betapublic", () -> ui.showInfo("@public.beta")); - } + }catch(IOException e){ ui.showException("@server.error", e); } diff --git a/core/src/mindustry/ui/dialogs/JoinDialog.java b/core/src/mindustry/ui/dialogs/JoinDialog.java index 1c80418708..aa4d9c22c8 100644 --- a/core/src/mindustry/ui/dialogs/JoinDialog.java +++ b/core/src/mindustry/ui/dialogs/JoinDialog.java @@ -367,8 +367,10 @@ public class JoinDialog extends BaseDialog{ local.row(); - TextButton button = local.button("", Styles.cleart, () -> safeConnect(host.address, host.port, host.version)) - .width(w).pad(5f).get(); + TextButton button = local.button("", Styles.cleart, () -> { + Events.fire(new ClientPreConnectEvent(host)); + safeConnect(host.address, host.port, host.version); + }).width(w).pad(5f).get(); button.clearChildren(); buildServer(host, button); } @@ -379,8 +381,10 @@ public class JoinDialog extends BaseDialog{ global.row(); - TextButton button = global.button("", Styles.cleart, () -> safeConnect(host.address, host.port, host.version)) - .width(w).pad(5f).get(); + TextButton button = global.button("", Styles.cleart, () -> { + Events.fire(new ClientPreConnectEvent(host)); + safeConnect(host.address, host.port, host.version); + }).width(w).pad(5f).get(); button.clearChildren(); buildServer(host, button); } diff --git a/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java b/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java index acb240d7c9..1ba7a0084b 100644 --- a/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java +++ b/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java @@ -2,6 +2,7 @@ package mindustry.ui.dialogs; import arc.*; import arc.func.*; +import arc.input.*; import arc.scene.ui.*; import arc.scene.ui.layout.*; import arc.struct.*; @@ -33,7 +34,14 @@ public class LaunchLoadoutDialog extends BaseDialog{ cont.clear(); buttons.clear(); - addCloseButton(); + buttons.defaults().size(160f, 64f); + buttons.button("@back", Icon.left, this::hide); + + keyDown(key -> { + if(key == KeyCode.escape || key == KeyCode.back){ + Core.app.post(this::hide); + } + }); //updates sum requirements Runnable update = () -> { @@ -79,7 +87,7 @@ public class LaunchLoadoutDialog extends BaseDialog{ update.run(); rebuildItems.run(); }); - }); + }).width(204); buttons.button("@launch.text", Icon.ok, () -> { universe.updateLoadout(core, selected); diff --git a/core/src/mindustry/ui/dialogs/PausedDialog.java b/core/src/mindustry/ui/dialogs/PausedDialog.java index f09e2fe185..f06c09ce30 100644 --- a/core/src/mindustry/ui/dialogs/PausedDialog.java +++ b/core/src/mindustry/ui/dialogs/PausedDialog.java @@ -34,12 +34,11 @@ public class PausedDialog extends BaseDialog{ }); if(!mobile){ - //TODO localize - //TODO capturing is disabled, remove? - //cont.label(() -> state.getSector() == null ? "" : - //("[lightgray]Next turn in [accent]" + state.getSector().displayTimeRemaining() + - // (state.rules.winWave > 0 && !state.getSector().isCaptured() ? "\n[lightgray]Reach wave[accent] " + state.rules.winWave + "[] to capture" : ""))) - // .visible(() -> state.getSector() != null).colspan(2); + //TODO localize + move to other wave menu + cont.label(() -> state.getSector() == null || state.rules.winWave <= 0 || state.getSector().isCaptured() ? "" : + (state.rules.winWave > 0 && !state.getSector().isCaptured() ? + (state.wave >= state.rules.winWave ? "\n[lightgray]Defeat remaining enemies to capture" : "\n[lightgray]Reach wave[accent] " + state.rules.winWave + "[] to capture") : "")) + .visible(() -> state.getSector() != null).colspan(2); cont.row(); float dw = 220f; @@ -89,7 +88,7 @@ public class PausedDialog extends BaseDialog{ cont.buttonRow("@launchcore", Icon.up, () -> { hide(); ui.planet.showLaunch(state.getSector(), player.team().core()); - }).disabled(b -> player.team().core() == null); + }).disabled(b -> player.team().core() == null || net.client()); cont.row(); @@ -101,7 +100,11 @@ public class PausedDialog extends BaseDialog{ cont.row(); } - cont.buttonRow("@hostserver.mobile", Icon.host, ui.host::show).disabled(b -> net.active()); + if(state.isCampaign() && net.active()){ + cont.buttonRow("@research", Icon.tree, ui.research::show); + }else{ + cont.buttonRow("@hostserver.mobile", Icon.host, ui.host::show).disabled(b -> net.active()); + } cont.buttonRow("@quit", Icon.exit, this::showQuitConfirm).update(s -> { s.setText(control.saves.getCurrent() != null && control.saves.getCurrent().isAutosave() ? "@save.quit" : "@quit"); diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 4d24bbe8b8..d730d455d9 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -217,9 +217,9 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ public void renderProjections(){ if(hovered != null){ planets.drawPlane(hovered, () -> { - Draw.color(Color.white, Pal.accent, Mathf.absin(5f, 1f)); + Draw.color(hovered.isUnderAttack() ? Pal.remove : Color.white, Pal.accent, Mathf.absin(5f, 1f)); - TextureRegion icon = hovered.locked() && !canSelect(hovered) ? Icon.lock.getRegion() : null; + TextureRegion icon = hovered.locked() && !canSelect(hovered) ? Icon.lock.getRegion() : hovered.isUnderAttack() ? Icon.warning.getRegion() : null; if(icon != null){ Draw.rect(icon, 0, 0); @@ -355,20 +355,18 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ stable.add("[accent]" + (sector.preset == null ? sector.id : sector.preset.localizedName)).row(); stable.image().color(Pal.accent).fillX().height(3f).pad(3f).row(); stable.add(sector.save != null ? sector.save.getPlayTime() : "@sectors.unexplored").row(); - if(sector.hasWaves() || sector.hasEnemyBase()){ + if(sector.isUnderAttack() || sector.hasEnemyBase()){ stable.add("[accent]Difficulty: " + (int)(sector.baseCoverage * 10)).row(); } - //TODO sector damage is disabled, remove when finalized - /* - if(sector.hasBase() && sector.hasWaves()){ + if(sector.isUnderAttack()){ //TODO localize when finalized //these mechanics are likely to change and as such are not added to the bundle stable.add("[scarlet]Under attack!"); stable.row(); - stable.add("[accent]" + Mathf.ceil(sectorDestructionTurns - (sector.getSecondsPassed() * 60) / turnDuration) + " turn(s)\nuntil destruction"); + stable.add("[accent]" + (int)(sector.getDamage() * 100) + "% damaged"); stable.row(); - }*/ + } if(sector.save != null){ stable.add("@sectors.resources").row(); diff --git a/core/src/mindustry/ui/dialogs/ResearchDialog.java b/core/src/mindustry/ui/dialogs/ResearchDialog.java index 9c5e6fd3ed..bb6841dcbb 100644 --- a/core/src/mindustry/ui/dialogs/ResearchDialog.java +++ b/core/src/mindustry/ui/dialogs/ResearchDialog.java @@ -164,13 +164,10 @@ public class ResearchDialog extends BaseDialog{ @Override public Dialog show(){ - Core.app.post(() -> { - if(net.client()){ - //TODO make this not display every time - //TODO rework this in the future - ui.showInfo("@campaign.multiplayer"); - } - }); + if(net.client()){ + ui.showInfo("@research.multiplayer"); + return null; + } return super.show(); } diff --git a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java index 8dd9753fda..190c4109f2 100644 --- a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -250,7 +250,6 @@ public class SettingsMenuDialog extends SettingsDialog{ if(!mobile){ game.checkPref("buildautopause", false); } - game.checkPref("mapcenter", true); if(steam){ game.sliderPref("playerlimit", 16, 2, 32, i -> { diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index f56d507c4d..44c39795be 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -54,7 +54,7 @@ public class HudFragment extends Fragment{ outer: for(int i = state.wave - 1; i <= state.wave + max; i++){ for(SpawnGroup group : state.rules.spawns){ - if(group.effect == StatusEffects.boss && group.getUnitsSpawned(i) > 0){ + if(group.effect == StatusEffects.boss && group.getSpawned(i) > 0){ int diff = (i + 2) - state.wave; //increments at which to warn about incoming guardian diff --git a/core/src/mindustry/ui/fragments/MinimapFragment.java b/core/src/mindustry/ui/fragments/MinimapFragment.java index 43ad3163b0..5acf3bc6d3 100644 --- a/core/src/mindustry/ui/fragments/MinimapFragment.java +++ b/core/src/mindustry/ui/fragments/MinimapFragment.java @@ -111,12 +111,10 @@ public class MinimapFragment extends Fragment{ } public void toggle(){ - if(Core.settings.getBool("mapcenter")){ - float size = baseSize * zoom * world.width(); - float ratio = (float)renderer.minimap.getTexture().height / renderer.minimap.getTexture().width; - panx = (size/2f - player.x() / (world.width() * tilesize) * size) / zoom; - pany = (size*ratio/2f - player.y() / (world.height() * tilesize) * size*ratio) / zoom; - } + float size = baseSize * zoom * world.width(); + float ratio = (float)renderer.minimap.getTexture().height / renderer.minimap.getTexture().width; + panx = (size/2f - player.x() / (world.width() * tilesize) * size) / zoom; + pany = (size*ratio/2f - player.y() / (world.height() * tilesize) * size*ratio) / zoom; shown = !shown; } } diff --git a/core/src/mindustry/world/blocks/defense/ForceProjector.java b/core/src/mindustry/world/blocks/defense/ForceProjector.java index b508e90965..3b90533745 100644 --- a/core/src/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/mindustry/world/blocks/defense/ForceProjector.java @@ -12,6 +12,7 @@ import mindustry.annotations.Annotations.*; import mindustry.content.*; import mindustry.gen.*; import mindustry.graphics.*; +import mindustry.logic.*; import mindustry.world.*; import mindustry.world.consumers.*; import mindustry.world.meta.*; @@ -80,11 +81,16 @@ public class ForceProjector extends Block{ Draw.color(); } - public class ForceBuild extends Building{ + public class ForceBuild extends Building implements Ranged{ public boolean broken = true; public float buildup, radscl, hit, warmup, phaseHeat; public ForceDraw drawer; + @Override + public float range(){ + return realRadius(); + } + @Override public void created(){ super.created(); diff --git a/core/src/mindustry/world/blocks/defense/MendProjector.java b/core/src/mindustry/world/blocks/defense/MendProjector.java index a2efa6e8b0..2bc50d6d7a 100644 --- a/core/src/mindustry/world/blocks/defense/MendProjector.java +++ b/core/src/mindustry/world/blocks/defense/MendProjector.java @@ -9,6 +9,7 @@ import mindustry.annotations.Annotations.*; import mindustry.content.*; import mindustry.gen.*; import mindustry.graphics.*; +import mindustry.logic.*; import mindustry.world.*; import mindustry.world.meta.*; @@ -55,11 +56,16 @@ public class MendProjector extends Block{ Drawf.dashCircle(x * tilesize + offset, y * tilesize + offset, range, Pal.accent); } - public class MendBuild extends Building{ + public class MendBuild extends Building implements Ranged{ float heat; float charge = Mathf.random(reload); float phaseHeat; + @Override + public float range(){ + return range; + } + @Override public void updateTile(){ heat = Mathf.lerpDelta(heat, consValid() || cheating() ? 1f : 0f, 0.08f); diff --git a/core/src/mindustry/world/blocks/defense/OverdriveProjector.java b/core/src/mindustry/world/blocks/defense/OverdriveProjector.java index 56010c7c0f..ae3c10f3fd 100644 --- a/core/src/mindustry/world/blocks/defense/OverdriveProjector.java +++ b/core/src/mindustry/world/blocks/defense/OverdriveProjector.java @@ -8,6 +8,7 @@ import arc.util.io.*; import mindustry.annotations.Annotations.*; import mindustry.gen.*; import mindustry.graphics.*; +import mindustry.logic.*; import mindustry.world.*; import mindustry.world.meta.*; @@ -60,11 +61,16 @@ public class OverdriveProjector extends Block{ } } - public class OverdriveBuild extends Building{ + public class OverdriveBuild extends Building implements Ranged{ float heat; float charge = Mathf.random(reload); float phaseHeat; + @Override + public float range(){ + return range; + } + @Override public void drawLight(){ Drawf.light(team, x, y, 50f * efficiency(), baseColor, 0.7f * efficiency()); diff --git a/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java b/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java index ea94a670b9..521e6dc19b 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java @@ -19,7 +19,6 @@ import mindustry.world.meta.values.*; import static mindustry.Vars.*; public class ItemTurret extends Turret{ - public int maxAmmo = 30; public ObjectMap ammoTypes = new ObjectMap<>(); public ItemTurret(String name){ diff --git a/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java b/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java index e34d221d53..11d6213aa5 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/LiquidTurret.java @@ -8,6 +8,7 @@ import mindustry.entities.bullet.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.type.*; +import mindustry.world.*; import mindustry.world.consumers.*; import mindustry.world.meta.*; import mindustry.world.meta.values.*; @@ -83,7 +84,9 @@ public class LiquidTurret extends Turret{ int tr = (int)(range / tilesize); for(int x = -tr; x <= tr; x++){ for(int y = -tr; y <= tr; y++){ - if(Fires.has(x + tile.x, y + tile.y)){ + Tile other = world.tileWorld(x + tile.x, y + tile.y); + //do not extinguish fires on other team blocks + if(other != null && Fires.has(x + tile.x, y + tile.y) && (other.build == null || other.team() == team)){ target = Fires.get(x + tile.x, y + tile.y); return; } diff --git a/core/src/mindustry/world/blocks/defense/turrets/PowerTurret.java b/core/src/mindustry/world/blocks/defense/turrets/PowerTurret.java index f8b49195da..85e5243e2f 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/PowerTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/PowerTurret.java @@ -1,6 +1,7 @@ package mindustry.world.blocks.defense.turrets; import mindustry.entities.bullet.*; +import mindustry.logic.*; import mindustry.world.meta.*; public class PowerTurret extends Turret{ @@ -33,6 +34,15 @@ public class PowerTurret extends Turret{ super.updateTile(); } + @Override + public double sense(LAccess sensor){ + return switch(sensor){ + case ammo -> power.status; + case ammoCapacity -> 1; + default -> super.sense(sensor); + }; + } + @Override public BulletType useAmmo(){ //nothing used directly diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 411ee782ec..4199c4b3fb 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -41,6 +41,7 @@ public abstract class Turret extends Block{ public Effect ammoUseEffect = Fx.none; public Sound shootSound = Sounds.shoot; + public int maxAmmo = 30; public int ammoPerShot = 1; public float ammoEjectBack = 1f; public float range = 50f; @@ -192,6 +193,8 @@ public abstract class Turret extends Block{ @Override public double sense(LAccess sensor){ return switch(sensor){ + case ammo -> totalAmmo; + case ammoCapacity -> maxAmmo; case rotation -> rotation; case shootX -> targetPos.x; case shootY -> targetPos.y; diff --git a/core/src/mindustry/world/blocks/logic/SwitchBlock.java b/core/src/mindustry/world/blocks/logic/SwitchBlock.java index bca47a306a..d27cebb1b3 100644 --- a/core/src/mindustry/world/blocks/logic/SwitchBlock.java +++ b/core/src/mindustry/world/blocks/logic/SwitchBlock.java @@ -37,6 +37,11 @@ public class SwitchBlock extends Block{ } } + @Override + public Boolean config(){ + return enabled; + } + @Override public byte version(){ return 1; diff --git a/gradle.properties b/gradle.properties index 5a37b2f0ab..0cde4e83bc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=dfcb9ab4b9f9bb977ed3cff4b8a16c22e076368a +archash=171cba8dda6deed931b998a0eb368d61f68ea38c diff --git a/tests/src/test/java/SectorTests.java b/tests/src/test/java/SectorTests.java index 4110670eed..6f07e77313 100644 --- a/tests/src/test/java/SectorTests.java +++ b/tests/src/test/java/SectorTests.java @@ -66,7 +66,7 @@ public class SectorTests{ outer: for(int i = 1; i <= 1000; i++){ for(SpawnGroup spawn : spawns){ - if(spawn.effect == StatusEffects.boss && spawn.getUnitsSpawned(i) > 0){ + if(spawn.effect == StatusEffects.boss && spawn.getSpawned(i) > 0){ bossWave = i; break outer; } @@ -84,7 +84,7 @@ public class SectorTests{ for(int i = 1; i <= bossWave; i++){ int total = 0; for(SpawnGroup spawn : spawns){ - total += spawn.getUnitsSpawned(i); + total += spawn.getSpawned(i); } assertNotEquals(0, total, "Sector " + zone + " has no spawned enemies at wave " + i); From 45b87ec615a9d1fd467abfb823bbf635fce0b197 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 15 Oct 2020 15:41:09 -0400 Subject: [PATCH 09/55] fixed some sector things, broke more things --- core/src/mindustry/core/Control.java | 14 +++++--------- core/src/mindustry/core/Logic.java | 2 +- core/src/mindustry/game/Objectives.java | 5 ++--- core/src/mindustry/game/Universe.java | 10 ++++------ core/src/mindustry/maps/SectorDamage.java | 7 +++++++ core/src/mindustry/type/Sector.java | 7 +++++-- core/src/mindustry/ui/dialogs/PlanetDialog.java | 4 +++- .../ui/dialogs/SettingsMenuDialog.java | 2 +- .../src/mindustry/ui/fragments/HudFragment.java | 2 +- .../world/blocks/storage/CoreBlock.java | 17 ----------------- gradle.properties | 2 +- tests/src/test/java/power/FakeGraphics.java | 5 ----- 12 files changed, 30 insertions(+), 47 deletions(-) diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index efe2327074..e4b4e3d44f 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -160,9 +160,7 @@ public class Control implements ApplicationListener, Loadable{ //delete the save, it is gone. if(saves.getCurrent() != null && !state.rules.tutorial){ - Sector sector = state.getSector(); - sector.save = null; - saves.getCurrent().delete(); + saves.getCurrent().save(); } } }); @@ -283,18 +281,16 @@ public class Control implements ApplicationListener, Loadable{ state.rules.sector = sector; //if there is no base, simulate a new game and place the right loadout at the spawn position - //TODO this is broken? if(state.rules.defaultTeam.cores().isEmpty()){ + //reset wave so things are more fair + state.wave = 1; - //kill all friendly units, since they should be dead anwyay + //kill all units, since they should be dead anwyay for(Unit unit : Groups.unit){ - if(unit.team() == state.rules.defaultTeam){ - unit.remove(); - } + unit.remove(); } Tile spawn = world.tile(sector.getSpawnPosition()); - //TODO PLACE CORRECT LOADOUT Schematics.placeLoadout(universe.getLastLoadout(), spawn.x, spawn.y); //set up camera/player locations diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 4d95b22820..3829c98cb6 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -120,7 +120,7 @@ public class Logic implements ApplicationListener{ } //waves depend on attack status. - state.rules.waves = state.rules.sector.isUnderAttack(); + state.rules.waves = state.rules.sector.isUnderAttack() || !state.rules.sector.hasBase(); //add resources based on turns passed if(state.rules.sector.save != null && core != null){ diff --git a/core/src/mindustry/game/Objectives.java b/core/src/mindustry/game/Objectives.java index a4097c51fc..7fc844a180 100644 --- a/core/src/mindustry/game/Objectives.java +++ b/core/src/mindustry/game/Objectives.java @@ -28,7 +28,6 @@ public class Objectives{ } } - //TODO fix public static class SectorComplete extends SectorObjective{ public SectorComplete(SectorPreset zone){ @@ -39,12 +38,12 @@ public class Objectives{ @Override public boolean complete(){ - return preset.sector.save != null && preset.sector.save.meta.wave >= preset.sector.save.meta.rules.winWave; + return preset.sector.save != null && preset.sector.save.meta.wave >= preset.captureWave; } @Override public String display(){ - return Core.bundle.format("requirement.wave", preset.sector.save == null ? "" : preset.sector.save.meta.rules.winWave, preset.localizedName); + return Core.bundle.format("requirement.capture", preset.localizedName); } } diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 82b53ce604..8eb9a8d2af 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -161,17 +161,14 @@ public class Universe{ //if so, just delete the save for now. it's lost. //TODO don't delete it later maybe - sector.save.delete(); - //clear recieved sector.setExtraItems(new ItemSeq()); - sector.save = null; - sector.setDamage(0f); + sector.setDamage(1.01f); }else if(attacked && wavesPassed > 0 && sector.save.meta.wave + wavesPassed >= sector.save.meta.rules.winWave && !sector.hasEnemyBase()){ //autocapture the sector sector.setUnderAttack(false); //fire the event - Events.fire(new SectorCaptureEvent(state.rules.sector)); + Events.fire(new SectorCaptureEvent(sector)); } } @@ -179,9 +176,10 @@ public class Universe{ if(sector.save != null && sector.save.meta != null && sector.save.meta.secinfo != null && sector.save.meta.secinfo.destination != null){ Sector to = sector.save.meta.secinfo.destination; if(to.save != null){ + float scl = Math.max(1f - sector.getDamage(), 0); ItemSeq items = new ItemSeq(); //calculated exported items to this sector - sector.save.meta.secinfo.export.each((item, stat) -> items.add(item, (int)(stat.mean * newSecondsPassed))); + sector.save.meta.secinfo.export.each((item, stat) -> items.add(item, (int)(stat.mean * newSecondsPassed * scl))); to.addItems(items); } } diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index b8afb42688..fb7ee28e8f 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -360,6 +360,13 @@ public class SectorDamage{ } } + //kill every core if damage is maximum + if(damage >= 1){ + for(Building c : state.rules.defaultTeam.cores().copy()){ + c.tile.remove(); + } + } + float falloff = (damage) / (Math.max(tiles.width, tiles.height) * Mathf.sqrt2); int peak = 0; diff --git a/core/src/mindustry/type/Sector.java b/core/src/mindustry/type/Sector.java index f692293309..59fc6de8da 100644 --- a/core/src/mindustry/type/Sector.java +++ b/core/src/mindustry/type/Sector.java @@ -86,7 +86,7 @@ public class Sector{ /** @return whether the player has a base here. */ public boolean hasBase(){ - return save != null && !save.meta.tags.getBool("nocores"); + return save != null && !save.meta.tags.getBool("nocores") && getDamage() < 1f; } /** @return whether the enemy has a generated base here. */ @@ -229,9 +229,10 @@ public class Sector{ if(save != null){ long seconds = getSecondsPassed(); + float scl = Math.max(1f - getDamage(), 0); //add produced items - save.meta.secinfo.production.each((item, stat) -> count.add(item, (int)(stat.mean * seconds))); + save.meta.secinfo.production.each((item, stat) -> count.add(item, (int)(stat.mean * seconds * scl))); //add received items count.add(getExtraItems()); @@ -253,6 +254,8 @@ public class Sector{ /** @return sector damage from enemy, 0 to 1 */ public float getDamage(){ + //dead sector + if(save != null & save.meta.tags.getBool("nocores")) return 1.01f; return Core.settings.getFloat(key("damage"), 0f); } diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index d730d455d9..44ef8eb17a 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -394,8 +394,10 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ stable.table(t -> { t.left(); + float scl = Math.max(1f - sector.getDamage(), 0); + sector.save.meta.secinfo.production.each((item, stat) -> { - int total = (int)(stat.mean * 60); + int total = (int)(stat.mean * 60 * scl); if(total > 1){ t.image(item.icon(Cicon.small)).padRight(3); t.add(UI.formatAmount(total) + " " + Core.bundle.get("unit.perminute")).color(Color.lightGray); diff --git a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java index 190c4109f2..efcc6e68bb 100644 --- a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -291,7 +291,7 @@ public class SettingsMenuDialog extends SettingsDialog{ } return s + "%"; }); - graphics.sliderPref("bridgeopacity", 75, 0, 100, 5, s -> s + "%"); + graphics.sliderPref("bridgeopacity", 100, 0, 100, 5, s -> s + "%"); if(!mobile){ graphics.checkPref("vsync", true, b -> Core.graphics.setVSync(b)); diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index 44c39795be..d37095be54 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -71,7 +71,7 @@ public class HudFragment extends Fragment{ //TODO details and stuff Events.on(SectorCaptureEvent.class, e ->{ //TODO localize - showToast("Sector[accent] captured[]!"); + showToast("Sector [accent]" + (e.sector.isBeingPlayed() ? "" : e.sector.id + " ") + "[]captured!"); }); //TODO localize diff --git a/core/src/mindustry/world/blocks/storage/CoreBlock.java b/core/src/mindustry/world/blocks/storage/CoreBlock.java index bdb16eb674..e0aae707fa 100644 --- a/core/src/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/mindustry/world/blocks/storage/CoreBlock.java @@ -310,23 +310,6 @@ public class CoreBlock extends StorageBlock{ } } - @Override - public void onDestroyed(){ - super.onDestroyed(); - - if(state.isCampaign() && team == state.rules.waveTeam){ - //do not recache - world.setGenerating(true); - tile.setOverlay(Blocks.spawn); - world.setGenerating(false); - - if(!spawner.getSpawns().contains(tile)){ - spawner.getSpawns().add(tile); - } - spawner.doShockwave(x, y); - } - } - @Override public void placed(){ super.placed(); diff --git a/gradle.properties b/gradle.properties index 0cde4e83bc..6015307e9d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=171cba8dda6deed931b998a0eb368d61f68ea38c +archash=7ce118ba1fcbe652dd3b225fd7d16a7a761c238e diff --git a/tests/src/test/java/power/FakeGraphics.java b/tests/src/test/java/power/FakeGraphics.java index 378f675224..5f64aa61f3 100644 --- a/tests/src/test/java/power/FakeGraphics.java +++ b/tests/src/test/java/power/FakeGraphics.java @@ -63,11 +63,6 @@ public class FakeGraphics extends Graphics{ return 0; } - @Override - public float getRawDeltaTime(){ - return 0; - } - @Override public int getFramesPerSecond(){ return 0; From d177c8b8756db388936730a1ef89e379146b1ac1 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 15 Oct 2020 15:45:19 -0400 Subject: [PATCH 10/55] arc --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 6015307e9d..0ebd9ffd28 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=7ce118ba1fcbe652dd3b225fd7d16a7a761c238e +archash=46ebdb4aeb1e03ca6b3b4c27a93533dc92278a33 From 5ee4101ba4fd07c6bf38247739d9d93974c3303b Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 15 Oct 2020 16:33:51 -0400 Subject: [PATCH 11/55] Moved some static regions --- core/src/mindustry/entities/comp/BuildingComp.java | 4 ++-- core/src/mindustry/graphics/BlockRenderer.java | 12 ++++++++++++ core/src/mindustry/logic/LExecutor.java | 2 +- core/src/mindustry/type/Sector.java | 2 ++ core/src/mindustry/world/Block.java | 13 ------------- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 15d79a8942..a3514cf76a 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -766,9 +766,9 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, } public void drawCracks(){ - if(!damaged() || block.size > Block.maxCrackSize) return; + if(!damaged() || block.size > BlockRenderer.maxCrackSize) return; int id = pos(); - TextureRegion region = Block.cracks[block.size - 1][Mathf.clamp((int)((1f - healthf()) * Block.crackRegions), 0, Block.crackRegions-1)]; + TextureRegion region = renderer.blocks.cracks[block.size - 1][Mathf.clamp((int)((1f - healthf()) * BlockRenderer.crackRegions), 0, BlockRenderer.crackRegions-1)]; Draw.colorl(0.2f, 0.1f + (1f - healthf())* 0.6f); Draw.rect(region, x, y, (id%4)*90); Draw.color(); diff --git a/core/src/mindustry/graphics/BlockRenderer.java b/core/src/mindustry/graphics/BlockRenderer.java index a36230f0aa..223540e601 100644 --- a/core/src/mindustry/graphics/BlockRenderer.java +++ b/core/src/mindustry/graphics/BlockRenderer.java @@ -20,11 +20,14 @@ import static arc.Core.*; import static mindustry.Vars.*; public class BlockRenderer implements Disposable{ + public static final int crackRegions = 8, maxCrackSize = 9; + private static final int initialRequests = 32 * 32; private static final int expandr = 9; private static final Color shadowColor = new Color(0, 0, 0, 0.71f); public final FloorRenderer floor = new FloorRenderer(); + public TextureRegion[][] cracks; private Seq tileview = new Seq<>(false, initialRequests, Tile.class); private Seq lightview = new Seq<>(false, initialRequests, Tile.class); @@ -40,6 +43,15 @@ public class BlockRenderer implements Disposable{ public BlockRenderer(){ + Events.on(ClientLoadEvent.class, e -> { + cracks = new TextureRegion[maxCrackSize][crackRegions]; + for(int size = 1; size <= maxCrackSize; size++){ + for(int i = 0; i < crackRegions; i++){ + cracks[size - 1][i] = Core.atlas.find("cracks-" + size + "-" + i); + } + } + }); + Events.on(WorldLoadEvent.class, event -> { shadowEvents.clear(); lastCamY = lastCamX = -99; //invalidate camera position so blocks get updated diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index fee780e145..d493a7f7fe 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -129,7 +129,7 @@ public class LExecutor{ public void setnum(int index, double value){ Var v = vars[index]; if(v.constant) return; - v.numval = Double.isNaN(value) || Double.isInfinite(value) ? 0 : 0; + v.numval = Double.isNaN(value) || Double.isInfinite(value) ? 0 : value; v.objval = null; v.isobj = false; } diff --git a/core/src/mindustry/type/Sector.java b/core/src/mindustry/type/Sector.java index 59fc6de8da..db3587674b 100644 --- a/core/src/mindustry/type/Sector.java +++ b/core/src/mindustry/type/Sector.java @@ -304,10 +304,12 @@ public class Sector{ return Core.settings.getInt(key("secondsi-passed")); } + //TODO this is terrible private String key(String key){ return planet.name + "-s-" + id + "-" + key; } + //TODO this is terrible private void put(String key, Object value){ Core.settings.put(key(key), value); } diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index 95d9a426e0..53dde34460 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -35,8 +35,6 @@ import java.util.*; import static mindustry.Vars.*; public class Block extends UnlockableContent{ - public static final int crackRegions = 8, maxCrackSize = 9; - public boolean hasItems; public boolean hasLiquids; public boolean hasPower; @@ -212,8 +210,6 @@ public class Block extends UnlockableContent{ public @Load("@-team") TextureRegion teamRegion; public TextureRegion[] teamRegions; - //TODO make this not static - public static TextureRegion[][] cracks; protected static final Seq tempTiles = new Seq<>(); protected static final Seq tempTileEnts = new Seq<>(); @@ -687,15 +683,6 @@ public class Block extends UnlockableContent{ public void load(){ region = Core.atlas.find(name); - if(cracks == null || (cracks[0][0].texture != null && cracks[0][0].texture.isDisposed())){ - cracks = new TextureRegion[maxCrackSize][crackRegions]; - for(int size = 1; size <= maxCrackSize; size++){ - for(int i = 0; i < crackRegions; i++){ - cracks[size - 1][i] = Core.atlas.find("cracks-" + size + "-" + i); - } - } - } - ContentRegions.loadRegions(this); //load specific team regions From 2f54edf34f9514281aa4e4caaedf0db4bc3e8a8b Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 16 Oct 2020 11:02:24 -0400 Subject: [PATCH 12/55] Sector refactoring, invasions and cleanup --- core/assets/bundles/bundle.properties | 2 + core/src/mindustry/Vars.java | 4 + core/src/mindustry/core/Control.java | 8 +- core/src/mindustry/core/Logic.java | 53 +--- core/src/mindustry/core/World.java | 14 +- core/src/mindustry/game/EventType.java | 9 + core/src/mindustry/game/SectorInfo.java | 67 +++-- core/src/mindustry/game/Stats.java | 2 +- core/src/mindustry/game/Universe.java | 100 +++++--- core/src/mindustry/io/SaveMeta.java | 7 +- core/src/mindustry/io/SaveVersion.java | 8 +- core/src/mindustry/maps/SectorDamage.java | 30 ++- core/src/mindustry/type/Planet.java | 6 +- core/src/mindustry/type/Sector.java | 237 ++++-------------- core/src/mindustry/ui/IntFormat.java | 12 +- core/src/mindustry/ui/Styles.java | 1 + .../mindustry/ui/dialogs/PausedDialog.java | 7 - .../mindustry/ui/dialogs/PlanetDialog.java | 65 +++-- .../mindustry/ui/dialogs/ResearchDialog.java | 2 +- .../mindustry/ui/fragments/HudFragment.java | 18 +- core/src/mindustry/world/Tile.java | 9 + .../world/blocks/campaign/LaunchPad.java | 8 +- .../world/blocks/distribution/Conveyor.java | 2 +- .../blocks/distribution/StackConveyor.java | 2 +- .../world/blocks/storage/StorageBlock.java | 2 +- .../mindustry/world/modules/ItemModule.java | 16 +- tools/src/mindustry/tools/Generators.java | 4 +- 27 files changed, 319 insertions(+), 376 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 1253de6a13..aa515bfc6f 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -285,6 +285,7 @@ selectschematic = [accent][[{0}][] to select+copy pausebuilding = [accent][[{0}][] to pause building resumebuilding = [scarlet][[{0}][] to resume building wave = [accent]Wave {0} +wave.cap = [accent]Wave {0}/{1} wave.waiting = [lightgray]Wave in {0} wave.waveInProgress = [lightgray]Wave in progress waiting = [lightgray]Waiting... @@ -521,6 +522,7 @@ sectors.resume = Resume sectors.launch = Launch sectors.select = Select sectors.nonelaunch = [lightgray]none (sun) +sectors.rename = Rename Sector planet.serpulo.name = Serpulo #TODO better name diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index 6fdc1418dd..d88b6584f7 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -86,6 +86,10 @@ public class Vars implements Loadable{ public static final float logicItemTransferRange = 45f; /** duration of time between turns in ticks */ public static final float turnDuration = 2 * Time.toMinutes; + /** chance of an invasion per turn, 1 = 100% */ + public static final float baseInvasionChance = 1f / 15f; + /** how many turns have to pass before invasions start */ + public static final int invasionGracePeriod = 20; /** min armor fraction damage; e.g. 0.05 = at least 5% damage */ public static final float minArmorDamage = 0.1f; /** launch animation duration */ diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index e4b4e3d44f..f6ae999945 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -279,6 +279,7 @@ public class Control implements ApplicationListener, Loadable{ slot.load(); slot.setAutosave(true); state.rules.sector = sector; + state.secinfo = state.rules.sector.info; //if there is no base, simulate a new game and place the right loadout at the spawn position if(state.rules.defaultTeam.cores().isEmpty()){ @@ -286,11 +287,9 @@ public class Control implements ApplicationListener, Loadable{ state.wave = 1; //kill all units, since they should be dead anwyay - for(Unit unit : Groups.unit){ - unit.remove(); - } + Groups.unit.clear(); - Tile spawn = world.tile(sector.getSpawnPosition()); + Tile spawn = world.tile(sector.info.spawnPosition); Schematics.placeLoadout(universe.getLastLoadout(), spawn.x, spawn.y); //set up camera/player locations @@ -313,7 +312,6 @@ public class Control implements ApplicationListener, Loadable{ }else{ net.reset(); logic.reset(); - sector.setSecondsPassed(0); world.loadSector(sector); state.rules.sector = sector; //assign origin when launching diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 3829c98cb6..00787d9e43 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -16,7 +16,6 @@ import mindustry.type.Weather.*; import mindustry.world.*; import mindustry.world.blocks.*; import mindustry.world.blocks.ConstructBlock.*; -import mindustry.world.blocks.storage.CoreBlock.*; import java.util.*; @@ -88,13 +87,10 @@ public class Logic implements ApplicationListener{ //when loading a 'damaged' sector, propagate the damage Events.on(SaveLoadEvent.class, e -> { if(state.isCampaign()){ - CoreBuild core = state.rules.defaultTeam.core(); + state.secinfo.write(); //how much wave time has passed - int wavesPassed = state.rules.sector.getWavesPassed(); - - //reset passed waves - state.rules.sector.setWavesPassed(0); + int wavesPassed = state.secinfo.wavesPassed; //wave has passed, remove all enemies, they are assumed to be dead if(wavesPassed > 0){ @@ -105,44 +101,22 @@ public class Logic implements ApplicationListener{ }); } + //simulate passing of waves if(wavesPassed > 0){ //simulate wave counter moving forward state.wave += wavesPassed; state.wavetime = state.rules.waveSpacing; + + SectorDamage.applyCalculatedDamage(); } - //reset damage display - state.rules.sector.setDamage(0f); + //reset values + state.secinfo.damage = 0f; + state.secinfo.wavesPassed = 0; + state.secinfo.hasCore = true; + state.secinfo.secondsPassed = 0; - //simulate damage if applicable - if(wavesPassed > 0){ - SectorDamage.applyCalculatedDamage(wavesPassed); - } - - //waves depend on attack status. - state.rules.waves = state.rules.sector.isUnderAttack() || !state.rules.sector.hasBase(); - - //add resources based on turns passed - if(state.rules.sector.save != null && core != null){ - //update correct storage capacity - state.rules.sector.save.meta.secinfo.storageCapacity = core.storageCapacity; - - //add new items received - state.rules.sector.calculateReceivedItems().each((item, amount) -> core.items.add(item, amount)); - - //clear received items - state.rules.sector.setExtraItems(new ItemSeq()); - - //validation - for(Item item : content.items()){ - //ensure positive items - if(core.items.get(item) < 0) core.items.set(item, 0); - //cap the items - if(core.items.get(item) > core.storageCapacity) core.items.set(item, core.storageCapacity); - } - } - - state.rules.sector.setSecondsPassed(0); + state.rules.sector.saveInfo(); } }); @@ -200,11 +174,6 @@ public class Logic implements ApplicationListener{ } public void skipWave(){ - if(state.isCampaign()){ - //warp time spent forward because the wave was just skipped. - state.secinfo.internalTimeSpent += state.wavetime; - } - state.wavetime = 0; } diff --git a/core/src/mindustry/core/World.java b/core/src/mindustry/core/World.java index 03a18c01ed..d6fcb40a97 100644 --- a/core/src/mindustry/core/World.java +++ b/core/src/mindustry/core/World.java @@ -253,7 +253,7 @@ public class World{ setSectorRules(sector); if(state.rules.defaultTeam.core() != null){ - sector.setSpawnPosition(state.rules.defaultTeam.core().pos()); + sector.info.spawnPosition = state.rules.defaultTeam.core().pos(); } } @@ -267,8 +267,6 @@ public class World{ ObjectIntMap floorc = new ObjectIntMap<>(); ObjectSet content = new ObjectSet<>(); - float waterFloors = 0, totalFloors = 0; - for(Tile tile : world.tiles){ if(world.getDarkness(tile.x, tile.y) >= 3){ continue; @@ -280,10 +278,6 @@ public class World{ if(liquid != null) content.add(liquid); if(!tile.block().isStatic()){ - totalFloors ++; - if(liquid == Liquids.water){ - waterFloors += tile.floor().isDeep() ? 1f : 0.7f; - } floorc.increment(tile.floor()); if(tile.overlay() != Blocks.air){ floorc.increment(tile.overlay()); @@ -326,9 +320,9 @@ public class World{ state.rules.weather.add(new WeatherEntry(Weathers.sporestorm)); } - state.secinfo.resources = content.asArray(); - state.secinfo.resources.sort(Structs.comps(Structs.comparing(Content::getContentType), Structs.comparingInt(c -> c.id))); - + sector.info.resources = content.asArray(); + sector.info.resources.sort(Structs.comps(Structs.comparing(Content::getContentType), Structs.comparingInt(c -> c.id))); + sector.saveInfo(); } public Context filterContext(Map map){ diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index 272c26363f..0ffb2f7369 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -73,6 +73,15 @@ public class EventType{ } } + /** Called when a sector is destroyed by waves when you're not there. */ + public static class SectorInvasionEvent{ + public final Sector sector; + + public SectorInvasionEvent(Sector sector){ + this.sector = sector; + } + } + public static class LaunchItemEvent{ public final ItemStack stack; diff --git a/core/src/mindustry/game/SectorInfo.java b/core/src/mindustry/game/SectorInfo.java index 8e7f73a256..c6c5d3ee51 100644 --- a/core/src/mindustry/game/SectorInfo.java +++ b/core/src/mindustry/game/SectorInfo.java @@ -26,7 +26,7 @@ public class SectorInfo{ /** Export statistics. */ public ObjectMap export = new ObjectMap<>(); /** Items stored in all cores. */ - public ItemSeq coreItems = new ItemSeq(); + public ItemSeq items = new ItemSeq(); /** The best available core type. */ public Block bestCoreType = Blocks.air; /** Max storage capacity. */ @@ -39,13 +39,26 @@ public class SectorInfo{ public @Nullable Sector destination; /** Resources known to occur at this sector. */ public Seq resources = new Seq<>(); + /** Whether waves are enabled here. */ + public boolean waves = true; + /** Wave # from state */ + public int wave = 1, winWave = -1; + /** Time between waves. */ + public float waveSpacing = 60 * 60 * 2; + /** Damage dealt to sector. */ + public float damage; + /** How many waves have passed while the player was away. */ + public int wavesPassed; + /** Packed core spawn position. */ + public int spawnPosition; + /** How long the player has been playing elsewhere. */ + public float secondsPassed; + /** Display name. */ + public @Nullable String name; /** Special variables for simulation. */ public float sumHealth, sumRps, sumDps, waveHealthBase, waveHealthSlope, waveDpsBase, waveDpsSlope; - /** Time spent at this sector. Do not use unless you know what you're doing. */ - public transient float internalTimeSpent; - /** Counter refresh state. */ private transient Interval time = new Interval(); /** Core item storage to prevent spoofing. */ @@ -84,27 +97,55 @@ public class SectorInfo{ return export.get(item, ExportStat::new).mean; } + /** Write contents of meta into main storage. */ + public void write(){ + state.wave = wave; + state.rules.waves = waves; + state.rules.waveSpacing = waveSpacing; + state.rules.winWave = winWave; + + CoreBuild entity = state.rules.defaultTeam.core(); + if(entity != null){ + entity.items.clear(); + entity.items.add(items); + //ensure capacity. + entity.items.each((i, a) -> entity.items.set(i, Math.min(a, entity.block.itemCapacity))); + } + + //TODO write items. + } + /** Prepare data for writing to a save. */ public void prepare(){ //update core items - coreItems.clear(); + items.clear(); CoreBuild entity = state.rules.defaultTeam.core(); if(entity != null){ ItemModule items = entity.items; for(int i = 0; i < items.length(); i++){ - coreItems.set(content.item(i), items.get(i)); + this.items.set(content.item(i), items.get(i)); } + + spawnPosition = entity.pos(); } + waveSpacing = state.rules.waveSpacing; + wave = state.wave; + winWave = state.rules.winWave; + waves = state.rules.waves; hasCore = entity != null; bestCoreType = !hasCore ? Blocks.air : state.rules.defaultTeam.cores().max(e -> e.block.size).block; storageCapacity = entity != null ? entity.storageCapacity : 0; + secondsPassed = 0; + wavesPassed = 0; + damage = 0; - //update sector's internal time spent counter - state.rules.sector.setTimeSpent(internalTimeSpent); - state.rules.sector.setUnderAttack(state.rules.waves); + if(state.rules.sector != null){ + state.rules.sector.info = this; + state.rules.sector.saveInfo(); + } SectorDamage.writeParameters(this); } @@ -115,14 +156,6 @@ public class SectorInfo{ //updating in multiplayer as a client doesn't make sense if(net.client()) return; - internalTimeSpent += Time.delta; - - //autorun turns - if(internalTimeSpent >= turnDuration){ - internalTimeSpent = 0; - universe.runTurn(); - } - CoreBuild ent = state.rules.defaultTeam.core(); //refresh throughput diff --git a/core/src/mindustry/game/Stats.java b/core/src/mindustry/game/Stats.java index 1d175607ba..b963223518 100644 --- a/core/src/mindustry/game/Stats.java +++ b/core/src/mindustry/game/Stats.java @@ -40,7 +40,7 @@ public class Stats{ //weigh used fractions float frac = 0f; - Seq obtainable = zone.save == null ? new Seq<>() : zone.save.meta.secinfo.resources.select(i -> i instanceof Item).as(); + Seq obtainable = zone.save == null ? new Seq<>() : zone.info.resources.select(i -> i instanceof Item).as(); for(Item item : obtainable){ frac += Mathf.clamp((float)itemsDelivered.get(item, 0) / capacity) / (float)obtainable.size; } diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 8eb9a8d2af..37a22d4209 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -18,6 +18,7 @@ public class Universe{ private int netSeconds; private float secondCounter; private int turn; + private float turnCounter; private Schematic lastLoadout; private ItemSeq lastLaunchResources = new ItemSeq(); @@ -54,17 +55,19 @@ public class Universe{ } } - /** @return sectors attacked on the current planet, minus the ones that are being played on right now. */ - public Seq getAttacked(Planet planet){ - return planet.sectors.select(s -> s.isUnderAttack() && s.hasBase() && !s.isBeingPlayed() && s.getWavesPassed() > 0); - } - /** Update planet rotations, global time and relevant state. */ public void update(){ //only update time when not in multiplayer if(!net.client()){ secondCounter += Time.delta / 60f; + turnCounter += Time.delta; + + //auto-run turns + if(turnCounter >= turnDuration){ + turnCounter = 0; + runTurn(); + } if(secondCounter >= 1){ seconds += (int)secondCounter; @@ -133,59 +136,84 @@ public class Universe{ //update relevant sectors for(Planet planet : content.planets()){ for(Sector sector : planet.sectors){ - if(sector.hasSave()){ - int spent = (int)(sector.getTimeSpent() / 60); - int actuallyPassed = Math.max(newSecondsPassed - spent, 0); + if(sector.hasSave() && sector.hasBase()){ //increment seconds passed for this sector by the time that just passed with this turn if(!sector.isBeingPlayed()){ - int secPassed = sector.getSecondsPassed() + actuallyPassed; + //increment time + sector.info.secondsPassed += turnDuration/60f; - sector.setSecondsPassed(secPassed); - - boolean attacked = sector.isUnderAttack(); - - int wavesPassed = (int)(secPassed*60f / sector.save.meta.rules.waveSpacing); - float damage = attacked ? SectorDamage.getDamage(sector.save.meta.secinfo, sector.save.meta.rules.waveSpacing, sector.save.meta.wave, wavesPassed) : 0f; + int wavesPassed = (int)(sector.info.secondsPassed*60f / sector.info.waveSpacing); + boolean attacked = sector.info.waves; if(attacked){ - sector.setWavesPassed(wavesPassed); + sector.info.wavesPassed = wavesPassed; } - sector.setDamage(damage); + float damage = attacked ? SectorDamage.getDamage(sector.info) : 0f; + + //damage never goes down until the player visits the sector, so use max + sector.info.damage = Math.max(sector.info.damage, damage); //check if the sector has been attacked too many times... if(attacked && damage >= 0.999f){ //fire event for losing the sector Events.fire(new SectorLoseEvent(sector)); - //if so, just delete the save for now. it's lost. - //TODO don't delete it later maybe - sector.setExtraItems(new ItemSeq()); - sector.setDamage(1.01f); - }else if(attacked && wavesPassed > 0 && sector.save.meta.wave + wavesPassed >= sector.save.meta.rules.winWave && !sector.hasEnemyBase()){ + //sector is dead. + sector.info.items.clear(); + sector.info.damage = 1f; + sector.info.hasCore = false; + sector.info.production.clear(); + }else if(attacked && wavesPassed > 0 && sector.info.wave + wavesPassed >= sector.info.winWave && !sector.hasEnemyBase()){ //autocapture the sector - sector.setUnderAttack(false); + sector.info.waves = false; //fire the event Events.fire(new SectorCaptureEvent(sector)); } + + float scl = sector.getProductionScale(); + + //export to another sector + if(sector.info.destination != null){ + Sector to = sector.info.destination; + if(to.hasBase()){ + ItemSeq items = new ItemSeq(); + //calculated exported items to this sector + sector.info.export.each((item, stat) -> items.add(item, (int)(stat.mean * newSecondsPassed * scl))); + to.addItems(items); + } + } + + //add production, making sure that it's capped + sector.info.production.each((item, stat) -> sector.info.items.add(item, Math.min((int)(stat.mean * seconds * scl), sector.info.storageCapacity - sector.info.items.get(item)))); + + sector.saveInfo(); } - //export to another sector - if(sector.save != null && sector.save.meta != null && sector.save.meta.secinfo != null && sector.save.meta.secinfo.destination != null){ - Sector to = sector.save.meta.secinfo.destination; - if(to.save != null){ - float scl = Math.max(1f - sector.getDamage(), 0); - ItemSeq items = new ItemSeq(); - //calculated exported items to this sector - sector.save.meta.secinfo.export.each((item, stat) -> items.add(item, (int)(stat.mean * newSecondsPassed * scl))); - to.addItems(items); + //queue random invasions + if(!sector.isAttacked() && turn > invasionGracePeriod){ + //TODO use factors like difficulty for better invasion chance + if(sector.near().contains(Sector::hasEnemyBase) && Mathf.chance(baseInvasionChance)){ + int waveMax = Math.max(sector.info.winWave, sector.isBeingPlayed() ? state.wave : 0) + Mathf.random(2, 4) * 5; + float waveSpace = Math.max(sector.info.waveSpacing - Mathf.random(1, 4) * 5 * 60, 40 * 60); + + //assign invasion-related things + if(sector.isBeingPlayed()){ + state.rules.winWave = waveMax; + state.rules.waves = true; + state.rules.waveSpacing = waveSpace; + }else{ + sector.info.winWave = waveMax; + sector.info.waves = true; + sector.info.waveSpacing = waveSpace; + sector.saveInfo(); + } + + Events.fire(new SectorInvasionEvent(sector)); } } - - //reset time spent to 0 - sector.setTimeSpent(0f); } } } @@ -202,7 +230,7 @@ public class Universe{ for(Planet planet : content.planets()){ for(Sector sector : planet.sectors){ if(sector.hasSave()){ - count.add(sector.calculateItems()); + count.add(sector.items()); } } } diff --git a/core/src/mindustry/io/SaveMeta.java b/core/src/mindustry/io/SaveMeta.java index f2e039f634..c6133889bc 100644 --- a/core/src/mindustry/io/SaveMeta.java +++ b/core/src/mindustry/io/SaveMeta.java @@ -14,12 +14,10 @@ public class SaveMeta{ public Map map; public int wave; public Rules rules; - public SectorInfo secinfo; public StringMap tags; public String[] mods; - public boolean hasProduction; - public SaveMeta(int version, long timestamp, long timePlayed, int build, String map, int wave, Rules rules, SectorInfo secinfo, StringMap tags){ + public SaveMeta(int version, long timestamp, long timePlayed, int build, String map, int wave, Rules rules, StringMap tags){ this.version = version; this.build = build; this.timestamp = timestamp; @@ -29,8 +27,5 @@ public class SaveMeta{ this.rules = rules; this.tags = tags; this.mods = JsonIO.read(String[].class, tags.get("mods", "[]")); - this.secinfo = secinfo; - - secinfo.production.each((e, amount) -> hasProduction |= amount.mean > 0.001f); } } diff --git a/core/src/mindustry/io/SaveVersion.java b/core/src/mindustry/io/SaveVersion.java index cacac7700a..e153b74587 100644 --- a/core/src/mindustry/io/SaveVersion.java +++ b/core/src/mindustry/io/SaveVersion.java @@ -40,7 +40,6 @@ public abstract class SaveVersion extends SaveFileReader{ map.get("mapname"), map.getInt("wave"), JsonIO.read(Rules.class, map.get("rules", "{}")), - JsonIO.read(SectorInfo.class, map.get("secinfo", "{}")), map ); } @@ -74,6 +73,7 @@ public abstract class SaveVersion extends SaveFileReader{ //prepare campaign data for writing if(state.isCampaign()){ state.secinfo.prepare(); + state.rules.sector.saveInfo(); } //flush tech node progress @@ -89,7 +89,6 @@ public abstract class SaveVersion extends SaveFileReader{ "wave", state.wave, "wavetime", state.wavetime, "stats", JsonIO.write(state.stats), - "secinfo", state.isCampaign() ? JsonIO.write(state.secinfo) : "{}", "rules", JsonIO.write(state.rules), "mods", JsonIO.write(mods.getModStrings().toArray(String.class)), "width", world.width(), @@ -107,14 +106,13 @@ public abstract class SaveVersion extends SaveFileReader{ state.wave = map.getInt("wave"); state.wavetime = map.getFloat("wavetime", state.rules.waveSpacing); state.stats = JsonIO.read(Stats.class, map.get("stats", "{}")); - state.secinfo = JsonIO.read(SectorInfo.class, map.get("secinfo", "{}")); state.rules = JsonIO.read(Rules.class, map.get("rules", "{}")); if(state.rules.spawns.isEmpty()) state.rules.spawns = defaultWaves.get(); lastReadBuild = map.getInt("build", -1); - //load time spent on sector into state + //load in sector info if(state.rules.sector != null){ - state.secinfo.internalTimeSpent = state.rules.sector.getStoredTimeSpent(); + state.secinfo = state.rules.sector.info; } if(!headless){ diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index fb7ee28e8f..1c942d1228 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -25,8 +25,11 @@ public class SectorDamage{ private static final int maxWavesSimulated = 50; /** @return calculated capture progress of the enemy */ - public static float getDamage(SectorInfo info, float waveSpace, int wave, int wavesPassed){ + public static float getDamage(SectorInfo info){ float health = info.sumHealth; + int wavesPassed = info.wavesPassed; + int wave = info.wave; + float waveSpace = info.waveSpacing; //this approach is O(n), it simulates every wave passing. //other approaches can assume all the waves come as one, but that's not as fair. @@ -76,9 +79,9 @@ public class SectorDamage{ } /** Applies wave damage based on sector parameters. */ - public static void applyCalculatedDamage(int wavesPassed){ + public static void applyCalculatedDamage(){ //calculate base damage fraction - float damage = getDamage(state.secinfo, state.rules.waveSpacing, state.wave, wavesPassed); + float damage = getDamage(state.secinfo); //scaled damage has a power component to make it seem a little more realistic (as systems fail, enemy capturing gets easier and easier) float scaled = Mathf.pow(damage, 1.5f); @@ -110,6 +113,21 @@ public class SectorDamage{ } } + if(state.secinfo.wavesPassed > 0){ + //simply remove each block in the spawner range if a wave passed + for(Tile spawner : spawner.getSpawns()){ + spawner.circle((int)(state.rules.dropZoneRadius / tilesize), tile -> { + if(tile.team() == state.rules.defaultTeam){ + if(rubble && tile.floor().hasSurface() && Mathf.chance(0.4)){ + Effect.rubble(tile.build.x, tile.build.y, tile.block().size); + } + + tile.remove(); + } + }); + } + } + //finally apply scaled damage apply(scaled); } @@ -120,6 +138,10 @@ public class SectorDamage{ Seq spawns = new Seq<>(); spawner.eachGroundSpawn((x, y) -> spawns.add(world.tile(x, y))); + if(spawns.isEmpty() && state.rules.waveTeam.core() != null){ + spawns.add(state.rules.waveTeam.core().tile); + } + if(core == null || spawns.isEmpty()) return; Tile start = spawns.first(); @@ -361,7 +383,7 @@ public class SectorDamage{ } //kill every core if damage is maximum - if(damage >= 1){ + if(fraction >= 1){ for(Building c : state.rules.defaultTeam.cores().copy()){ c.tile.remove(); } diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index 6153aa4721..911939b870 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -177,7 +177,7 @@ public class Planet extends UnlockableContent{ public void updateBaseCoverage(){ for(Sector sector : sectors){ float sum = 1f; - for(Sector other : sector.inRange(2)){ + for(Sector other : sector.near()){ if(other.generateEnemyBase){ sum += 1f; } @@ -204,6 +204,10 @@ public class Planet extends UnlockableContent{ @Override public void init(){ + for(Sector sector : sectors){ + sector.loadInfo(); + } + if(generator != null){ Noise.setSeed(id + 1); diff --git a/core/src/mindustry/type/Sector.java b/core/src/mindustry/type/Sector.java index db3587674b..37535bffca 100644 --- a/core/src/mindustry/type/Sector.java +++ b/core/src/mindustry/type/Sector.java @@ -7,6 +7,7 @@ import arc.struct.*; import arc.util.*; import mindustry.*; import mindustry.game.Saves.*; +import mindustry.game.*; import mindustry.graphics.g3d.PlanetGrid.*; import mindustry.world.modules.*; @@ -25,6 +26,7 @@ public class Sector{ public @Nullable SaveSlot save; public @Nullable SectorPreset preset; + public SectorInfo info = new SectorInfo(); /** Number 0-1 indicating the difficulty based on nearby bases. */ public float baseCoverage; @@ -38,60 +40,50 @@ public class Sector{ this.id = tile.id; } - public Seq inRange(int range){ - //TODO cleanup/remove - if(true){ - tmpSeq1.clear(); - neighbors(tmpSeq1::add); - - return tmpSeq1; - } - + public Seq near(){ tmpSeq1.clear(); - tmpSeq2.clear(); - tmpSet.clear(); + near(tmpSeq1::add); - tmpSeq1.add(this); - tmpSet.add(this); - for(int i = 0; i < range; i++){ - while(!tmpSeq1.isEmpty()){ - Sector sec = tmpSeq1.pop(); - tmpSet.add(sec); - sec.neighbors(other -> { - if(tmpSet.add(other)){ - tmpSeq2.add(other); - } - }); - } - tmpSeq1.clear(); - tmpSeq1.addAll(tmpSeq2); - } - - tmpSeq3.clear().addAll(tmpSeq2); - return tmpSeq3; + return tmpSeq1; } - public void neighbors(Cons cons){ + public void near(Cons cons){ for(Ptile tile : tile.tiles){ cons.get(planet.getSector(tile)); } } /** @return whether this sector can be landed on at all. - * Only sectors adjacent to non-wave sectors can be landed on. - * TODO also preset sectors*/ + * Only sectors adjacent to non-wave sectors can be landed on. */ public boolean unlocked(){ return hasBase() || (preset != null && preset.alwaysUnlocked); } + public void saveInfo(){ + Core.settings.putJson(planet.name + "-s-" + id + "-info", info); + } + + public void loadInfo(){ + info = Core.settings.getJson(planet.name + "-s-" + id + "-info", SectorInfo.class, SectorInfo::new); + } + + public float getProductionScale(){ + return Math.max(1f - info.damage, 0); + } + + public boolean isAttacked(){ + if(isBeingPlayed()) return state.rules.waves; + return save != null && info.waves && info.hasCore; + } + /** @return whether the player has a base here. */ public boolean hasBase(){ - return save != null && !save.meta.tags.getBool("nocores") && getDamage() < 1f; + return save != null && info.hasCore; } /** @return whether the enemy has a generated base here. */ public boolean hasEnemyBase(){ - return generateEnemyBase && (save == null || save.meta.rules.waves); + return generateEnemyBase && (save == null || info.waves); } public boolean isBeingPlayed(){ @@ -99,26 +91,18 @@ public class Sector{ return Vars.state.isGame() && Vars.state.rules.sector == this && !Vars.state.gameOver; } + public String name(){ + if(preset != null) return preset.localizedName; + return info.name == null ? id + "" : info.name; + } + + public void setName(String name){ + info.name = name; + saveInfo(); + } + public boolean isCaptured(){ - return save != null && !save.meta.rules.waves; - } - - /** @return whether waves are present - if true, any bases here will be attacked. - * only applicable to sectors with active player bases. */ - public boolean isUnderAttack(){ - return hasBase() && Core.settings.getBool(key("under-attack"), true); - } - - public void setUnderAttack(boolean underAttack){ - Core.settings.put(key("under-attack"), underAttack); - } - - public void setWavesPassed(int waves){ - put("waves-passed", waves); - } - - public int getWavesPassed(){ - return Core.settings.getInt(key("waves-passed"), 0); + return save != null && !info.waves; } public boolean hasSave(){ @@ -143,15 +127,6 @@ public class Sector{ return res % 2 == 0 ? res : res + 1; } - //TODO this should be stored in a more efficient structure, and be updated each turn - public ItemSeq getExtraItems(){ - return Core.settings.getJson(key("extra-items"), ItemSeq.class, ItemSeq::new); - } - - public void setExtraItems(ItemSeq stacks){ - Core.settings.putJson(key("extra-items"), stacks); - } - public void addItem(Item item, int amount){ removeItem(item, -amount); } @@ -169,151 +144,27 @@ public class Sector{ int cap = state.rules.defaultTeam.core().storageCapacity; items.each((item, amount) -> storage.add(item, Math.min(cap - storage.get(item), amount))); } - }else{ - ItemSeq recv = getExtraItems(); - - if(save != null){ - //"shave off" extra items - - ItemSeq count = new ItemSeq(); - - //add items already present - count.add(save.meta.secinfo.coreItems); - - count.add(calculateReceivedItems()); - - int capacity = save.meta.secinfo.storageCapacity; - - //when over capacity, add that to the extra items - count.each((i, a) -> { - if(a > capacity){ - recv.remove(i, (a - capacity)); - } - }); - } - - recv.add(items); - - setExtraItems(recv); + }else if(hasBase()){ + items.each((item, amount) -> info.items.add(item, Math.min(info.storageCapacity - info.items.get(item), amount))); + saveInfo(); } } - public ItemSeq calculateItems(){ + /** @return items currently in this sector, taking into account playing state. */ + public ItemSeq items(){ ItemSeq count = new ItemSeq(); //for sectors being played on, add items directly if(isBeingPlayed()){ count.add(state.rules.defaultTeam.items()); - }else if(save != null){ + }else{ //add items already present - count.add(save.meta.secinfo.coreItems); - - count.add(calculateReceivedItems()); - - int capacity = save.meta.secinfo.storageCapacity; - - //validation - count.each((item, amount) -> { - //ensure positive items - if(amount < 0) count.set(item, 0); - //cap the items - if(amount > capacity) count.set(item, capacity); - }); + count.add(info.items); } return count; } - public ItemSeq calculateReceivedItems(){ - ItemSeq count = new ItemSeq(); - - if(save != null){ - long seconds = getSecondsPassed(); - float scl = Math.max(1f - getDamage(), 0); - - //add produced items - save.meta.secinfo.production.each((item, stat) -> count.add(item, (int)(stat.mean * seconds * scl))); - - //add received items - count.add(getExtraItems()); - } - - return count; - } - - //TODO these methods should maybe move somewhere else and/or be contained in a data object - public void setSpawnPosition(int position){ - put("spawn-position", position); - } - - /** Only valid after this sector has been landed on once. */ - //TODO move to sector data? - public int getSpawnPosition(){ - return Core.settings.getInt(key("spawn-position"), Point2.pack(world.width() / 2, world.height() / 2)); - } - - /** @return sector damage from enemy, 0 to 1 */ - public float getDamage(){ - //dead sector - if(save != null & save.meta.tags.getBool("nocores")) return 1.01f; - return Core.settings.getFloat(key("damage"), 0f); - } - - public void setDamage(float damage){ - put("damage", damage); - } - - /** @return time spent in this sector this turn in ticks. */ - public float getTimeSpent(){ - //return currently counting time spent if being played on - if(isBeingPlayed()) return state.secinfo.internalTimeSpent; - - //else return the stored value - return getStoredTimeSpent(); - } - - public void setTimeSpent(float time){ - put("time-spent", time); - - //update counting time - if(isBeingPlayed()){ - state.secinfo.internalTimeSpent = time; - } - } - - public String displayTimeRemaining(){ - float amount = Vars.turnDuration - getTimeSpent(); - int seconds = (int)(amount / 60); - int sf = seconds % 60; - return (seconds / 60) + ":" + (sf < 10 ? "0" : "") + sf; - } - - /** @return the stored amount of time spent in this sector this turn in ticks. - * Do not use unless you know what you're doing. */ - public float getStoredTimeSpent(){ - return Core.settings.getFloat(key("time-spent")); - } - - public void setSecondsPassed(int number){ - put("secondsi-passed", number); - } - - /** @return how much time has passed in this sector without the player resuming here. - * Used for resource production calculations. */ - public int getSecondsPassed(){ - return Core.settings.getInt(key("secondsi-passed")); - } - - //TODO this is terrible - private String key(String key){ - return planet.name + "-s-" + id + "-" + key; - } - - //TODO this is terrible - private void put(String key, Object value){ - Core.settings.put(key(key), value); - } - public String toString(){ return planet.name + "#" + id; } diff --git a/core/src/mindustry/ui/IntFormat.java b/core/src/mindustry/ui/IntFormat.java index 2ca0e9de1f..fab10cd67f 100644 --- a/core/src/mindustry/ui/IntFormat.java +++ b/core/src/mindustry/ui/IntFormat.java @@ -10,7 +10,7 @@ import arc.func.*; public class IntFormat{ private final StringBuilder builder = new StringBuilder(); private final String text; - private int lastValue = Integer.MIN_VALUE; + private int lastValue = Integer.MIN_VALUE, lastValue2 = Integer.MIN_VALUE; private Func converter = String::valueOf; public IntFormat(String text){ @@ -30,4 +30,14 @@ public class IntFormat{ lastValue = value; return builder; } + + public CharSequence get(int value1, int value2){ + if(lastValue != value1 || lastValue2 != value2){ + builder.setLength(0); + builder.append(Core.bundle.format(text, value1, value2)); + } + lastValue = value1; + lastValue2 = value2; + return builder; + } } diff --git a/core/src/mindustry/ui/Styles.java b/core/src/mindustry/ui/Styles.java index 13e97202e5..802a18004b 100644 --- a/core/src/mindustry/ui/Styles.java +++ b/core/src/mindustry/ui/Styles.java @@ -23,6 +23,7 @@ import static mindustry.gen.Tex.*; @StyleDefaults public class Styles{ + //TODO all these names are inconsistent and not descriptive public static Drawable black, black9, black8, black6, black3, black5, none, flatDown, flatOver; public static ButtonStyle defaultb, waveb; public static TextButtonStyle defaultt, squaret, nodet, cleart, discordt, infot, clearPartialt, clearTogglet, clearToggleMenut, togglet, transt, fullTogglet, logict; diff --git a/core/src/mindustry/ui/dialogs/PausedDialog.java b/core/src/mindustry/ui/dialogs/PausedDialog.java index f06c09ce30..5bd1e5abd3 100644 --- a/core/src/mindustry/ui/dialogs/PausedDialog.java +++ b/core/src/mindustry/ui/dialogs/PausedDialog.java @@ -34,13 +34,6 @@ public class PausedDialog extends BaseDialog{ }); if(!mobile){ - //TODO localize + move to other wave menu - cont.label(() -> state.getSector() == null || state.rules.winWave <= 0 || state.getSector().isCaptured() ? "" : - (state.rules.winWave > 0 && !state.getSector().isCaptured() ? - (state.wave >= state.rules.winWave ? "\n[lightgray]Defeat remaining enemies to capture" : "\n[lightgray]Reach wave[accent] " + state.rules.winWave + "[] to capture") : "")) - .visible(() -> state.getSector() != null).colspan(2); - cont.row(); - float dw = 220f; cont.defaults().width(dw).height(55).pad(5f); diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 44ef8eb17a..9ad8c87831 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -217,9 +217,9 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ public void renderProjections(){ if(hovered != null){ planets.drawPlane(hovered, () -> { - Draw.color(hovered.isUnderAttack() ? Pal.remove : Color.white, Pal.accent, Mathf.absin(5f, 1f)); + Draw.color(hovered.isAttacked() ? Pal.remove : Color.white, Pal.accent, Mathf.absin(5f, 1f)); - TextureRegion icon = hovered.locked() && !canSelect(hovered) ? Icon.lock.getRegion() : hovered.isUnderAttack() ? Icon.warning.getRegion() : null; + TextureRegion icon = hovered.locked() && !canSelect(hovered) ? Icon.lock.getRegion() : hovered.isAttacked() ? Icon.warning.getRegion() : null; if(icon != null){ Draw.rect(icon, 0, 0); @@ -352,69 +352,80 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ stable.clear(); stable.background(Styles.black6); - stable.add("[accent]" + (sector.preset == null ? sector.id : sector.preset.localizedName)).row(); + stable.table(title -> { + title.add("[accent]" + sector.name()); + if(sector.preset == null){ + title.button(Icon.pencilSmall, Styles.clearPartiali, () -> { + ui.showTextInput("@sectors.rename", "@name", 20, sector.name(), v -> { + sector.setName(v); + updateSelected(); + }); + }).size(40f).padLeft(4); + } + }).row(); + stable.image().color(Pal.accent).fillX().height(3f).pad(3f).row(); stable.add(sector.save != null ? sector.save.getPlayTime() : "@sectors.unexplored").row(); - if(sector.isUnderAttack() || sector.hasEnemyBase()){ + + if(sector.isAttacked() || sector.hasEnemyBase()){ stable.add("[accent]Difficulty: " + (int)(sector.baseCoverage * 10)).row(); } - if(sector.isUnderAttack()){ + if(sector.isAttacked()){ //TODO localize when finalized //these mechanics are likely to change and as such are not added to the bundle stable.add("[scarlet]Under attack!"); stable.row(); - stable.add("[accent]" + (int)(sector.getDamage() * 100) + "% damaged"); + stable.add("[accent]" + (int)(sector.info.damage * 100) + "% damaged"); stable.row(); } if(sector.save != null){ stable.add("@sectors.resources").row(); stable.table(t -> { - - if(sector.save != null && sector.save.meta.secinfo != null && sector.save.meta.secinfo.resources.any()){ + if(sector.info.resources.any()){ t.left(); int idx = 0; int max = 5; - for(UnlockableContent c : sector.save.meta.secinfo.resources){ + for(UnlockableContent c : sector.info.resources){ t.image(c.icon(Cicon.small)).padRight(3); if(++idx % max == 0) t.row(); } }else{ t.add("@unknown").color(Color.lightGray); } - - }).fillX().row(); } //production - if(sector.hasBase() && sector.save.meta.hasProduction){ - stable.add("@sectors.production").row(); - stable.table(t -> { - t.left(); + if(sector.hasBase()){ + Table t = new Table().left(); - float scl = Math.max(1f - sector.getDamage(), 0); + float scl = sector.getProductionScale(); - sector.save.meta.secinfo.production.each((item, stat) -> { - int total = (int)(stat.mean * 60 * scl); - if(total > 1){ - t.image(item.icon(Cicon.small)).padRight(3); - t.add(UI.formatAmount(total) + " " + Core.bundle.get("unit.perminute")).color(Color.lightGray); - t.row(); - } - }); - }).row(); + sector.info.production.each((item, stat) -> { + int total = (int)(stat.mean * 60 * scl); + if(total > 1){ + t.image(item.icon(Cicon.small)).padRight(3); + t.add(UI.formatAmount(total) + " " + Core.bundle.get("unit.perminute")).color(Color.lightGray); + t.row(); + } + }); + + if(t.getChildren().any()){ + stable.add("@sectors.production").row(); + stable.add(t); + } } //stored resources - if(sector.hasBase() && sector.save.meta.secinfo.coreItems.total > 0){ + if(sector.hasBase() && sector.info.items.total > 0){ stable.add("@sectors.stored").row(); stable.table(t -> { t.left(); t.table(res -> { - ItemSeq items = sector.calculateItems(); + ItemSeq items = sector.items(); int i = 0; for(ItemStack stack : items){ diff --git a/core/src/mindustry/ui/dialogs/ResearchDialog.java b/core/src/mindustry/ui/dialogs/ResearchDialog.java index bb6841dcbb..b79aacbce5 100644 --- a/core/src/mindustry/ui/dialogs/ResearchDialog.java +++ b/core/src/mindustry/ui/dialogs/ResearchDialog.java @@ -60,7 +60,7 @@ public class ResearchDialog extends BaseDialog{ for(Planet planet : content.planets()){ for(Sector sector : planet.sectors){ if(sector.hasSave()){ - ItemSeq cached = sector.calculateItems(); + ItemSeq cached = sector.items(); add(cached); cache.put(sector, cached); } diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index d37095be54..327e65cd13 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -71,12 +71,17 @@ public class HudFragment extends Fragment{ //TODO details and stuff Events.on(SectorCaptureEvent.class, e ->{ //TODO localize - showToast("Sector [accent]" + (e.sector.isBeingPlayed() ? "" : e.sector.id + " ") + "[]captured!"); + showToast("Sector [accent]" + (e.sector.isBeingPlayed() ? "" : e.sector.name() + " ") + "[white]captured!"); }); //TODO localize Events.on(SectorLoseEvent.class, e -> { - showToast(Icon.warning, "Sector " + e.sector.id + " [scarlet]lost!"); + showToast(Icon.warning, "Sector [accent]" + e.sector.name() + "[white] lost!"); + }); + + //TODO localize + Events.on(SectorInvasionEvent.class, e -> { + showToast(Icon.warning, "Sector [accent]" + e.sector.name() + "[white] under attack!"); }); Events.on(ResetEvent.class, e -> { @@ -589,6 +594,7 @@ public class HudFragment extends Fragment{ StringBuilder ibuild = new StringBuilder(); IntFormat wavef = new IntFormat("wave"); + IntFormat wavefc = new IntFormat("wave.cap"); IntFormat enemyf = new IntFormat("wave.enemy"); IntFormat enemiesf = new IntFormat("wave.enemies"); IntFormat waitingf = new IntFormat("wave.waiting", i -> { @@ -714,7 +720,11 @@ public class HudFragment extends Fragment{ table.labelWrap(() -> { builder.setLength(0); - builder.append(wavef.get(state.wave)); + if(state.rules.winWave > 1 && state.rules.winWave >= state.wave && state.isCampaign()){ + builder.append(wavefc.get(state.wave, state.rules.winWave)); + }else{ + builder.append(wavef.get(state.wave)); + } builder.append("\n"); if(state.enemies > 0){ @@ -727,7 +737,7 @@ public class HudFragment extends Fragment{ } if(state.rules.waveTimer){ - builder.append((logic.isWaitingWave() ? Core.bundle.get("wave.waveInProgress") : ( waitingf.get((int)(state.wavetime/60))))); + builder.append((logic.isWaitingWave() ? Core.bundle.get("wave.waveInProgress") : (waitingf.get((int)(state.wavetime/60))))); }else if(state.enemies == 0){ builder.append(Core.bundle.get("waiting")); } diff --git a/core/src/mindustry/world/Tile.java b/core/src/mindustry/world/Tile.java index 7478f81db4..8fdfd6c009 100644 --- a/core/src/mindustry/world/Tile.java +++ b/core/src/mindustry/world/Tile.java @@ -267,6 +267,10 @@ public class Tile implements Position, QuadTreeObject, Displayable{ Geometry.circle(x, y, world.width(), world.height(), radius, cons); } + public void circle(int radius, Cons cons){ + circle(radius, (x, y) -> cons.get(world.rawTile(x, y))); + } + public void recache(){ if(!headless && !world.isGenerating()){ renderer.blocks.floor.recacheTile(this); @@ -332,6 +336,11 @@ public class Tile implements Position, QuadTreeObject, Displayable{ recache(); } + /** Sets the overlay without a recache. */ + public void setOverlayQuiet(Block block){ + this.overlay = (Floor)block; + } + public void clearOverlay(){ setOverlayID((short)0); } diff --git a/core/src/mindustry/world/blocks/campaign/LaunchPad.java b/core/src/mindustry/world/blocks/campaign/LaunchPad.java index 093fff4f70..dd1cc69007 100644 --- a/core/src/mindustry/world/blocks/campaign/LaunchPad.java +++ b/core/src/mindustry/world/blocks/campaign/LaunchPad.java @@ -121,9 +121,7 @@ public class LaunchPad extends Block{ return Core.bundle.format("launch.destination", dest == null ? Core.bundle.get("sectors.nonelaunch") : - dest.preset == null ? - "[accent]Sector " + dest.id : - "[accent]" + dest.preset.localizedName); + "[accent]" + dest.name()); }).pad(4); } @@ -213,7 +211,7 @@ public class LaunchPad extends Block{ //actually launch the items upon removal if(team() == state.rules.defaultTeam){ if(destsec != null && (destsec != state.rules.sector || net.client())){ - ItemSeq dest = destsec.getExtraItems(); + ItemSeq dest = new ItemSeq(); for(ItemStack stack : stacks){ dest.add(stack); @@ -223,7 +221,7 @@ public class LaunchPad extends Block{ Events.fire(new LaunchItemEvent(stack)); } - destsec.setExtraItems(dest); + destsec.addItems(dest); } } } diff --git a/core/src/mindustry/world/blocks/distribution/Conveyor.java b/core/src/mindustry/world/blocks/distribution/Conveyor.java index 457e7e65e7..60ab45f159 100644 --- a/core/src/mindustry/world/blocks/distribution/Conveyor.java +++ b/core/src/mindustry/world/blocks/distribution/Conveyor.java @@ -156,7 +156,7 @@ public class Conveyor extends Block implements Autotiler{ lastInserted = build.lastInserted; mid = build.mid; minitem = build.minitem; - items.addAll(build.items); + items.add(build.items); } } diff --git a/core/src/mindustry/world/blocks/distribution/StackConveyor.java b/core/src/mindustry/world/blocks/distribution/StackConveyor.java index e7095a686c..3327c62c15 100644 --- a/core/src/mindustry/world/blocks/distribution/StackConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/StackConveyor.java @@ -203,7 +203,7 @@ public class StackConveyor extends Block implements Autotiler{ if(front() instanceof StackConveyorBuild e && e.team == team){ // sleep if its occupied if(e.link == -1){ - e.items.addAll(items); + e.items.add(items); e.lastItem = lastItem; e.link = tile.pos(); // ▲ to | from ▼ diff --git a/core/src/mindustry/world/blocks/storage/StorageBlock.java b/core/src/mindustry/world/blocks/storage/StorageBlock.java index 50eb65a270..a8a5578d95 100644 --- a/core/src/mindustry/world/blocks/storage/StorageBlock.java +++ b/core/src/mindustry/world/blocks/storage/StorageBlock.java @@ -70,7 +70,7 @@ public class StorageBlock extends Block{ public void overwrote(Seq previous){ for(Building other : previous){ if(other.items != null){ - items.addAll(other.items); + items.add(other.items); } } diff --git a/core/src/mindustry/world/modules/ItemModule.java b/core/src/mindustry/world/modules/ItemModule.java index 16d49484f0..6cd96985cb 100644 --- a/core/src/mindustry/world/modules/ItemModule.java +++ b/core/src/mindustry/world/modules/ItemModule.java @@ -243,6 +243,16 @@ public class ItemModule extends BlockModule{ } } + public void add(ItemSeq stacks){ + stacks.each(this::add); + } + + public void add(ItemModule items){ + for(int i = 0; i < items.items.length; i++){ + add(i, items.items[i]); + } + } + public void add(Item item, int amount){ add(item.id, amount); } @@ -261,12 +271,6 @@ public class ItemModule extends BlockModule{ } } - public void addAll(ItemModule items){ - for(int i = 0; i < items.items.length; i++){ - add(i, items.items[i]); - } - } - public void remove(Item item, int amount){ amount = Math.min(amount, items[item.id]); diff --git a/tools/src/mindustry/tools/Generators.java b/tools/src/mindustry/tools/Generators.java index d8f67eee8c..645b2ea7f0 100644 --- a/tools/src/mindustry/tools/Generators.java +++ b/tools/src/mindustry/tools/Generators.java @@ -153,9 +153,9 @@ public class Generators{ ImagePacker.generate("cracks", () -> { RidgedPerlin r = new RidgedPerlin(1, 3); - for(int size = 1; size <= Block.maxCrackSize; size++){ + for(int size = 1; size <= BlockRenderer.maxCrackSize; size++){ int dim = size * 32; - int steps = Block.crackRegions; + int steps = BlockRenderer.crackRegions; for(int i = 0; i < steps; i++){ float fract = i / (float)steps; From f5decdaa1c3da58c095b50c3dce5c8a516226043 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 16 Oct 2020 11:27:17 -0400 Subject: [PATCH 13/55] Disabled spawner radius/warning when waves off --- core/src/mindustry/ai/WaveSpawner.java | 2 +- core/src/mindustry/entities/comp/UnitComp.java | 2 +- core/src/mindustry/graphics/OverlayRenderer.java | 10 ++++++---- .../mindustry/world/blocks/storage/CoreBlock.java | 15 +++++++++++++++ 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/ai/WaveSpawner.java b/core/src/mindustry/ai/WaveSpawner.java index 9a1ffb9d1d..99b52d40e5 100644 --- a/core/src/mindustry/ai/WaveSpawner.java +++ b/core/src/mindustry/ai/WaveSpawner.java @@ -48,7 +48,7 @@ public class WaveSpawner{ /** @return true if the player is near a ground spawn point. */ public boolean playerNear(){ - return !player.dead() && spawns.contains(g -> Mathf.dst(g.x * tilesize, g.y * tilesize, player.x, player.y) < state.rules.dropZoneRadius && player.team() != state.rules.waveTeam); + return state.rules.waves && !player.dead() && spawns.contains(g -> Mathf.dst(g.x * tilesize, g.y * tilesize, player.x, player.y) < state.rules.dropZoneRadius && player.team() != state.rules.waveTeam); } public void spawnEnemies(){ diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 605e2d1d1e..72a8d115f0 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -286,7 +286,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I drag = type.drag * (isGrounded() ? (floorOn().dragMultiplier) : 1f); //apply knockback based on spawns - if(team != state.rules.waveTeam){ + if(team != state.rules.waveTeam && state.rules.waves){ float relativeSize = state.rules.dropZoneRadius + hitSize/2f + 1f; for(Tile spawn : spawner.getSpawns()){ if(within(spawn.worldx(), spawn.worldy(), relativeSize)){ diff --git a/core/src/mindustry/graphics/OverlayRenderer.java b/core/src/mindustry/graphics/OverlayRenderer.java index 19569ed1a3..c7c0c697c3 100644 --- a/core/src/mindustry/graphics/OverlayRenderer.java +++ b/core/src/mindustry/graphics/OverlayRenderer.java @@ -121,10 +121,12 @@ public class OverlayRenderer{ Lines.stroke(2f); Draw.color(Color.gray, Color.lightGray, Mathf.absin(Time.time(), 8f, 1f)); - for(Tile tile : spawner.getSpawns()){ - if(tile.within(player.x, player.y, state.rules.dropZoneRadius + spawnerMargin)){ - Draw.alpha(Mathf.clamp(1f - (player.dst(tile) - state.rules.dropZoneRadius) / spawnerMargin)); - Lines.dashCircle(tile.worldx(), tile.worldy(), state.rules.dropZoneRadius); + if(state.rules.waves){ + for(Tile tile : spawner.getSpawns()){ + if(tile.within(player.x, player.y, state.rules.dropZoneRadius + spawnerMargin)){ + Draw.alpha(Mathf.clamp(1f - (player.dst(tile) - state.rules.dropZoneRadius) / spawnerMargin)); + Lines.dashCircle(tile.worldx(), tile.worldy(), state.rules.dropZoneRadius); + } } } diff --git a/core/src/mindustry/world/blocks/storage/CoreBlock.java b/core/src/mindustry/world/blocks/storage/CoreBlock.java index e0aae707fa..99ae254e8b 100644 --- a/core/src/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/mindustry/world/blocks/storage/CoreBlock.java @@ -196,6 +196,21 @@ public class CoreBlock extends StorageBlock{ return false; } + @Override + public void onDestroyed(){ + super.onDestroyed(); + + //add a spawn to the map for future reference - waves should be disabled, so it shouldn't matter + if(state.isCampaign() && team == state.rules.waveTeam){ + //do not recache + tile.setOverlayQuiet(Blocks.spawn); + + if(!spawner.getSpawns().contains(tile)){ + spawner.getSpawns().add(tile); + } + } + } + @Override public void drawLight(){ Drawf.light(team, x, y, 30f * size, Pal.accent, 0.5f + Mathf.absin(20f, 0.1f)); From 83756a6ea009b8d4ed35352ee926437e5d0330af Mon Sep 17 00:00:00 2001 From: abomb4 Date: Sat, 17 Oct 2020 00:05:19 +0800 Subject: [PATCH 14/55] New feature: bullet homing delay --- core/src/mindustry/entities/bullet/BulletType.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index aafbb42504..8e06cf466e 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -104,6 +104,8 @@ public abstract class BulletType extends Content{ public float incendChance = 1f; public float homingPower = 0f; public float homingRange = 50f; + /** Use a negative value to disable homing delay. */ + public float homingDelay = -1f; public Color lightningColor = Pal.surge; public int lightning; @@ -260,7 +262,7 @@ public abstract class BulletType extends Content{ } public void update(Bullet b){ - if(homingPower > 0.0001f){ + if(homingPower > 0.0001f && b.time >= homingDelay){ Teamc target = Units.closestTarget(b.team, b.x, b.y, homingRange, e -> (e.isGrounded() && collidesGround) || (e.isFlying() && collidesAir), t -> collidesGround); if(target != null){ b.vel.setAngle(Mathf.slerpDelta(b.rotation(), b.angleTo(target), homingPower)); From f391e7a5ac04ee9731b134e02f31eb26b553e04f Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 16 Oct 2020 12:16:00 -0400 Subject: [PATCH 15/55] Sector production bugfixes --- core/src/mindustry/content/SectorPresets.java | 14 ++++++------- core/src/mindustry/game/Universe.java | 5 +---- .../mindustry/ui/dialogs/PlanetDialog.java | 20 ++++++++----------- .../world/blocks/storage/CoreBlock.java | 1 + 4 files changed, 17 insertions(+), 23 deletions(-) diff --git a/core/src/mindustry/content/SectorPresets.java b/core/src/mindustry/content/SectorPresets.java index ff1f36bc22..e516bab740 100644 --- a/core/src/mindustry/content/SectorPresets.java +++ b/core/src/mindustry/content/SectorPresets.java @@ -18,7 +18,7 @@ public class SectorPresets implements ContentList{ groundZero = new SectorPreset("groundZero", serpulo, 15){{ alwaysUnlocked = true; captureWave = 10; - difficulty = 0; + difficulty = 1; }}; saltFlats = new SectorPreset("saltFlats", serpulo, 101){{ @@ -26,23 +26,23 @@ public class SectorPresets implements ContentList{ }}; frozenForest = new SectorPreset("frozenForest", serpulo, 86){{ - captureWave = 40; - difficulty = 1; + captureWave = 20; + difficulty = 2; }}; craters = new SectorPreset("craters", serpulo, 18){{ - captureWave = 40; + captureWave = 20; difficulty = 2; }}; ruinousShores = new SectorPreset("ruinousShores", serpulo, 19){{ - captureWave = 40; + captureWave = 30; difficulty = 3; }}; stainedMountains = new SectorPreset("stainedMountains", serpulo, 20){{ captureWave = 30; - difficulty = 2; + difficulty = 3; }}; fungalPass = new SectorPreset("fungalPass", serpulo, 21){{ @@ -54,7 +54,7 @@ public class SectorPresets implements ContentList{ }}; tarFields = new SectorPreset("tarFields", serpulo, 23){{ - captureWave = 40; + captureWave = 50; difficulty = 5; }}; diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 37a22d4209..5577d3da2f 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -196,18 +196,15 @@ public class Universe{ if(!sector.isAttacked() && turn > invasionGracePeriod){ //TODO use factors like difficulty for better invasion chance if(sector.near().contains(Sector::hasEnemyBase) && Mathf.chance(baseInvasionChance)){ - int waveMax = Math.max(sector.info.winWave, sector.isBeingPlayed() ? state.wave : 0) + Mathf.random(2, 4) * 5; - float waveSpace = Math.max(sector.info.waveSpacing - Mathf.random(1, 4) * 5 * 60, 40 * 60); + int waveMax = Math.max(sector.info.winWave, sector.isBeingPlayed() ? state.wave : 0) + Mathf.random(2, 5) * 5; //assign invasion-related things if(sector.isBeingPlayed()){ state.rules.winWave = waveMax; state.rules.waves = true; - state.rules.waveSpacing = waveSpace; }else{ sector.info.winWave = waveMax; sector.info.waves = true; - sector.info.waveSpacing = waveSpace; sector.saveInfo(); } diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 9ad8c87831..2d32588faa 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -380,19 +380,15 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ stable.row(); } - if(sector.save != null){ + if(sector.save != null && sector.info.resources.any()){ stable.add("@sectors.resources").row(); stable.table(t -> { - if(sector.info.resources.any()){ - t.left(); - int idx = 0; - int max = 5; - for(UnlockableContent c : sector.info.resources){ - t.image(c.icon(Cicon.small)).padRight(3); - if(++idx % max == 0) t.row(); - } - }else{ - t.add("@unknown").color(Color.lightGray); + t.left(); + int idx = 0; + int max = 5; + for(UnlockableContent c : sector.info.resources){ + t.image(c.icon(Cicon.small)).padRight(3); + if(++idx % max == 0) t.row(); } }).fillX().row(); } @@ -414,7 +410,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ if(t.getChildren().any()){ stable.add("@sectors.production").row(); - stable.add(t); + stable.add(t).row(); } } diff --git a/core/src/mindustry/world/blocks/storage/CoreBlock.java b/core/src/mindustry/world/blocks/storage/CoreBlock.java index 99ae254e8b..b8c240e95d 100644 --- a/core/src/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/mindustry/world/blocks/storage/CoreBlock.java @@ -342,6 +342,7 @@ public class CoreBlock extends StorageBlock{ @Override public void handleItem(Building source, Item item){ if(net.server() || !net.active()){ + state.secinfo.handleCoreItem(item, 1); if(items.get(item) >= getMaximumAccepted(item)){ //create item incineration effect at random intervals From b0ea725142240a51ca87c8e1e2fd521fd1db2004 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 16 Oct 2020 12:56:48 -0400 Subject: [PATCH 16/55] Sector tweaks --- core/src/mindustry/core/Control.java | 11 +++++++++++ core/src/mindustry/game/Universe.java | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index f6ae999945..1d5e2de6fc 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -283,6 +283,17 @@ public class Control implements ApplicationListener, Loadable{ //if there is no base, simulate a new game and place the right loadout at the spawn position if(state.rules.defaultTeam.cores().isEmpty()){ + + //no spawn set -> delete the sector save + if(sector.info.spawnPosition == 0){ + //delete old save + sector.save = null; + slot.delete(); + //play again + playSector(origin, sector); + return; + } + //reset wave so things are more fair state.wave = 1; diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 5577d3da2f..5827f61168 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -165,7 +165,7 @@ public class Universe{ sector.info.damage = 1f; sector.info.hasCore = false; sector.info.production.clear(); - }else if(attacked && wavesPassed > 0 && sector.info.wave + wavesPassed >= sector.info.winWave && !sector.hasEnemyBase()){ + }else if(attacked && wavesPassed > 0 && sector.info.winWave > 1 && sector.info.wave + wavesPassed >= sector.info.winWave && !sector.hasEnemyBase()){ //autocapture the sector sector.info.waves = false; From 1fbced0433effb5edabc3555b2fe862ace3a0d9c Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 16 Oct 2020 14:09:29 -0400 Subject: [PATCH 17/55] Corrected loadout placement function --- core/src/mindustry/core/Control.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/core/Control.java b/core/src/mindustry/core/Control.java index 1d5e2de6fc..0b789d14fd 100644 --- a/core/src/mindustry/core/Control.java +++ b/core/src/mindustry/core/Control.java @@ -301,7 +301,7 @@ public class Control implements ApplicationListener, Loadable{ Groups.unit.clear(); Tile spawn = world.tile(sector.info.spawnPosition); - Schematics.placeLoadout(universe.getLastLoadout(), spawn.x, spawn.y); + Schematics.placeLaunchLoadout(spawn.x, spawn.y); //set up camera/player locations player.set(spawn.x * tilesize, spawn.y * tilesize); From bddcdc0aa2f919237ed9b86b431283f070cad413 Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Fri, 16 Oct 2020 19:57:13 +0100 Subject: [PATCH 18/55] make planet stuff public, constructor protected --- .../mindustry/graphics/g3d/PlanetGrid.java | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/core/src/mindustry/graphics/g3d/PlanetGrid.java b/core/src/mindustry/graphics/g3d/PlanetGrid.java index e4972e3eb7..3f5ee0630a 100644 --- a/core/src/mindustry/graphics/g3d/PlanetGrid.java +++ b/core/src/mindustry/graphics/g3d/PlanetGrid.java @@ -22,15 +22,16 @@ public class PlanetGrid{ {5, 3, 10, 1, 4}, {2, 5, 4, 0, 11}, {3, 7, 6, 1, 8}, {7, 2, 9, 0, 6} }; - public final int size; - public final Ptile[] tiles; - public final Corner[] corners; - public final Edge[] edges; + public int size; + public Ptile[] tiles; + public Corner[] corners; + public Edge[] edges; - PlanetGrid(int size){ + //this is protected so if you want to make strange grids you should know what you're doing. + protected PlanetGrid(int size){ this.size = size; - tiles = new Ptile[Buildingount(size)]; + tiles = new Ptile[tileCount(size)]; for(int i = 0; i < tiles.length; i++){ tiles[i] = new Ptile(i, i < 12 ? 5 : 6); } @@ -67,7 +68,7 @@ public class PlanetGrid{ return result; } - static PlanetGrid initialGrid(){ + public static PlanetGrid initialGrid(){ PlanetGrid grid = new PlanetGrid(0); for(Ptile t : grid.tiles){ @@ -111,7 +112,7 @@ public class PlanetGrid{ return grid; } - static PlanetGrid subdividedGrid(PlanetGrid prev){ + public static PlanetGrid subdividedGrid(PlanetGrid prev){ PlanetGrid grid = new PlanetGrid(prev.size + 1); int prevTiles = prev.tiles.length; @@ -162,7 +163,7 @@ public class PlanetGrid{ return grid; } - static void addCorner(int id, PlanetGrid grid, int t1, int t2, int t3){ + public static void addCorner(int id, PlanetGrid grid, int t1, int t2, int t3){ Corner c = grid.corners[id]; Ptile[] t = {grid.tiles[t1], grid.tiles[t2], grid.tiles[t3]}; c.v.set(t[0].v).add(t[1].v).add(t[2].v).nor(); @@ -172,7 +173,7 @@ public class PlanetGrid{ } } - static void addEdge(int id, PlanetGrid grid, int t1, int t2){ + public static void addEdge(int id, PlanetGrid grid, int t1, int t2){ Edge e = grid.edges[id]; Ptile[] t = {grid.tiles[t1], grid.tiles[t2]}; Corner[] c = { @@ -186,36 +187,36 @@ public class PlanetGrid{ } } - static int pos(Ptile t, Ptile n){ + public static int pos(Ptile t, Ptile n){ for(int i = 0; i < t.edgeCount; i++) if(t.tiles[i] == n) return i; return -1; } - static int pos(Ptile t, Corner c){ + public static int pos(Ptile t, Corner c){ for(int i = 0; i < t.edgeCount; i++) if(t.corners[i] == c) return i; return -1; } - static int pos(Corner c, Corner n){ + public static int pos(Corner c, Corner n){ for(int i = 0; i < 3; i++) if(c.corners[i] == n) return i; return -1; } - static int Buildingount(int size){ + public static int tileCount(int size){ return 10 * Mathf.pow(3, size) + 2; } - static int cornerCount(int size){ + public static int cornerCount(int size){ return 20 * Mathf.pow(3, size); } - static int edgeCount(int size){ + public static int edgeCount(int size){ return 30 * Mathf.pow(3, size); } From e00daffe6db59dc71c9bdd54f6d1387074432836 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 16 Oct 2020 15:27:30 -0400 Subject: [PATCH 19/55] Bugfixes --- core/assets/bundles/bundle.properties | 1 - core/src/mindustry/Vars.java | 2 +- core/src/mindustry/core/Logic.java | 29 +---------------- .../src/mindustry/editor/MapEditorDialog.java | 11 ++++--- .../entities/bullet/LaserBulletType.java | 5 +++ .../entities/bullet/LiquidBulletType.java | 2 ++ .../mindustry/entities/comp/BuildingComp.java | 32 +++++++++++++++++++ core/src/mindustry/game/SectorInfo.java | 2 +- core/src/mindustry/game/Universe.java | 4 +-- core/src/mindustry/maps/SectorDamage.java | 8 +++-- .../ui/dialogs/SettingsMenuDialog.java | 3 -- .../ui/fragments/PlacementFragment.java | 2 +- .../world/blocks/storage/CoreBlock.java | 6 ++-- .../world/blocks/storage/StorageBlock.java | 4 ++- 14 files changed, 63 insertions(+), 48 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index aa515bfc6f..78c3259e9b 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -730,7 +730,6 @@ setting.fullscreen.name = Fullscreen setting.borderlesswindow.name = Borderless Window[lightgray] (restart may be required) setting.fps.name = Show FPS & Ping setting.smoothcamera.name = Smooth Camera -setting.blockselectkeys.name = Show Block Select Keys setting.vsync.name = VSync setting.pixelate.name = Pixelate setting.minimap.name = Show Minimap diff --git a/core/src/mindustry/Vars.java b/core/src/mindustry/Vars.java index d88b6584f7..3c8b57e7c5 100644 --- a/core/src/mindustry/Vars.java +++ b/core/src/mindustry/Vars.java @@ -87,7 +87,7 @@ public class Vars implements Loadable{ /** duration of time between turns in ticks */ public static final float turnDuration = 2 * Time.toMinutes; /** chance of an invasion per turn, 1 = 100% */ - public static final float baseInvasionChance = 1f / 15f; + public static final float baseInvasionChance = 1f / 25f; /** how many turns have to pass before invasions start */ public static final int invasionGracePeriod = 20; /** min armor fraction damage; e.g. 0.05 = at least 5% damage */ diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 00787d9e43..88aeeabed9 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -14,8 +14,6 @@ import mindustry.maps.*; import mindustry.type.*; import mindustry.type.Weather.*; import mindustry.world.*; -import mindustry.world.blocks.*; -import mindustry.world.blocks.ConstructBlock.*; import java.util.*; @@ -40,32 +38,7 @@ public class Logic implements ApplicationListener{ //skip null entities or un-rebuildables, for obvious reasons; also skip client since they can't modify these requests if(tile.build == null || !tile.block().rebuildable || net.client()) return; - if(block instanceof ConstructBlock){ - - ConstructBuild entity = tile.bc(); - - //update block to reflect the fact that something was being constructed - if(entity.cblock != null && entity.cblock.synthetic()){ - block = entity.cblock; - }else{ - //otherwise this was a deconstruction that was interrupted, don't want to rebuild that - return; - } - } - - TeamData data = state.teams.get(tile.team()); - - //remove existing blocks that have been placed here. - //painful O(n) iteration + copy - for(int i = 0; i < data.blocks.size; i++){ - BlockPlan b = data.blocks.get(i); - if(b.x == tile.x && b.y == tile.y){ - data.blocks.removeIndex(i); - break; - } - } - - data.blocks.addFirst(new BlockPlan(tile.x, tile.y, (short)tile.build.rotation, block.id, tile.build.config())); + tile.build.addPlan(true); }); Events.on(BlockBuildEndEvent.class, event -> { diff --git a/core/src/mindustry/editor/MapEditorDialog.java b/core/src/mindustry/editor/MapEditorDialog.java index 4f7eb008fd..dda95c6ed2 100644 --- a/core/src/mindustry/editor/MapEditorDialog.java +++ b/core/src/mindustry/editor/MapEditorDialog.java @@ -385,7 +385,7 @@ public class MapEditorDialog extends Dialog implements Disposable{ } public void build(){ - float size = 60f; + float size = 58f; clearChildren(); table(cont -> { @@ -559,10 +559,11 @@ public class MapEditorDialog extends Dialog implements Disposable{ mid.row(); - mid.table(t -> { - t.button("@editor.center", Icon.move, Styles.cleart, () -> view.center()).growX().margin(9f); - }).growX().top(); - + if(!mobile){ + mid.table(t -> { + t.button("@editor.center", Icon.move, Styles.cleart, () -> view.center()).growX().margin(9f); + }).growX().top(); + } }).margin(0).left().growY(); diff --git a/core/src/mindustry/entities/bullet/LaserBulletType.java b/core/src/mindustry/entities/bullet/LaserBulletType.java index ad5965f3b8..6d43baf95c 100644 --- a/core/src/mindustry/entities/bullet/LaserBulletType.java +++ b/core/src/mindustry/entities/bullet/LaserBulletType.java @@ -39,6 +39,11 @@ public class LaserBulletType extends BulletType{ this(1f); } + @Override + public float estimateDPS(){ + return super.estimateDPS() * 2f; + } + @Override public void init(){ super.init(); diff --git a/core/src/mindustry/entities/bullet/LiquidBulletType.java b/core/src/mindustry/entities/bullet/LiquidBulletType.java index 2d3de79977..5da33f95e0 100644 --- a/core/src/mindustry/entities/bullet/LiquidBulletType.java +++ b/core/src/mindustry/entities/bullet/LiquidBulletType.java @@ -22,6 +22,8 @@ public class LiquidBulletType extends BulletType{ if(liquid != null){ this.liquid = liquid; this.status = liquid.effect; + lightColor = liquid.lightColor; + lightOpacity = liquid.lightColor.a; } ammoMultiplier = 1f; diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index a3514cf76a..7e8bb19a1e 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -21,12 +21,14 @@ import mindustry.ctype.*; import mindustry.entities.*; import mindustry.game.EventType.*; import mindustry.game.*; +import mindustry.game.Teams.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.logic.*; import mindustry.type.*; import mindustry.ui.*; import mindustry.world.*; +import mindustry.world.blocks.ConstructBlock.*; import mindustry.world.blocks.environment.*; import mindustry.world.blocks.payloads.*; import mindustry.world.blocks.power.*; @@ -191,6 +193,36 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, //endregion //region utility methods + public void addPlan(boolean checkPrevious){ + if(!block.rebuildable) return; + + if(self() instanceof ConstructBuild entity){ + //update block to reflect the fact that something was being constructed + if(entity.cblock != null && entity.cblock.synthetic()){ + block = entity.cblock; + }else{ + //otherwise this was a deconstruction that was interrupted, don't want to rebuild that + return; + } + } + + TeamData data = state.teams.get(team); + + if(checkPrevious){ + //remove existing blocks that have been placed here. + //painful O(n) iteration + copy + for(int i = 0; i < data.blocks.size; i++){ + BlockPlan b = data.blocks.get(i); + if(b.x == tile.x && b.y == tile.y){ + data.blocks.removeIndex(i); + break; + } + } + } + + data.blocks.addFirst(new BlockPlan(tile.x, tile.y, (short)rotation, block.id, config())); + } + /** Configure with the current, local player. */ public void configure(Object value){ //save last used config diff --git a/core/src/mindustry/game/SectorInfo.java b/core/src/mindustry/game/SectorInfo.java index c6c5d3ee51..1d928b00cd 100644 --- a/core/src/mindustry/game/SectorInfo.java +++ b/core/src/mindustry/game/SectorInfo.java @@ -109,7 +109,7 @@ public class SectorInfo{ entity.items.clear(); entity.items.add(items); //ensure capacity. - entity.items.each((i, a) -> entity.items.set(i, Math.min(a, entity.block.itemCapacity))); + entity.items.each((i, a) -> entity.items.set(i, Math.min(a, entity.storageCapacity))); } //TODO write items. diff --git a/core/src/mindustry/game/Universe.java b/core/src/mindustry/game/Universe.java index 5827f61168..30f0100b2d 100644 --- a/core/src/mindustry/game/Universe.java +++ b/core/src/mindustry/game/Universe.java @@ -194,8 +194,8 @@ public class Universe{ //queue random invasions if(!sector.isAttacked() && turn > invasionGracePeriod){ - //TODO use factors like difficulty for better invasion chance - if(sector.near().contains(Sector::hasEnemyBase) && Mathf.chance(baseInvasionChance)){ + //invasion chance depends on # of nearby bases + if(Mathf.chance(baseInvasionChance * sector.near().count(Sector::hasEnemyBase))){ int waveMax = Math.max(sector.info.winWave, sector.isBeingPlayed() ? state.wave : 0) + Mathf.random(2, 5) * 5; //assign invasion-related things diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 1c942d1228..52a129c0b7 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -328,7 +328,7 @@ public class SectorDamage{ int radius = 3; //only penetrate a certain % by health, not by distance - float totalHealth = path.sumf(t -> { + float totalHealth = damage >= 1f ? 1f : path.sumf(t -> { float s = 0; for(int dx = -radius; dx <= radius; dx++){ for(int dy = -radius; dy <= radius; dy++){ @@ -345,7 +345,7 @@ public class SectorDamage{ float healthCount = 0; out: - for(int i = 0; i < path.size && healthCount < targetHealth; i++){ + for(int i = 0; i < path.size && (healthCount < targetHealth || damage >= 1f); i++){ Tile t = path.get(i); for(int dx = -radius; dx <= radius; dx++){ @@ -365,7 +365,7 @@ public class SectorDamage{ removal.add(other.build); - if(healthCount >= targetHealth){ + if(healthCount >= targetHealth && damage < 0.999f){ break out; } } @@ -376,6 +376,7 @@ public class SectorDamage{ for(Building r : removal){ if(r.tile.build == r){ + r.addPlan(false); r.tile.remove(); } } @@ -424,6 +425,7 @@ public class SectorDamage{ Effect.rubble(other.build.x, other.build.y, other.block().size); } + other.build.addPlan(false); other.remove(); } } diff --git a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java index efcc6e68bb..c00076d92b 100644 --- a/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java +++ b/core/src/mindustry/ui/dialogs/SettingsMenuDialog.java @@ -339,9 +339,6 @@ public class SettingsMenuDialog extends SettingsDialog{ graphics.checkPref("smoothcamera", true); graphics.checkPref("position", false); graphics.checkPref("fps", false); - if(!mobile){ - graphics.checkPref("blockselectkeys", true); - } graphics.checkPref("playerindicators", true); graphics.checkPref("indicators", true); graphics.checkPref("animatedwater", true); diff --git a/core/src/mindustry/ui/fragments/PlacementFragment.java b/core/src/mindustry/ui/fragments/PlacementFragment.java index 7b53a24012..25c009ff63 100644 --- a/core/src/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/mindustry/ui/fragments/PlacementFragment.java @@ -289,7 +289,7 @@ public class PlacementFragment extends Fragment{ topTable.table(header -> { String keyCombo = ""; - if(!mobile && Core.settings.getBool("blockselectkeys")){ + if(!mobile){ Seq blocks = getByCategory(currentCategory); for(int i = 0; i < blocks.size; i++){ if(blocks.get(i) == displayBlock && (i + 1) / 10 - 1 < blockSelect.length){ diff --git a/core/src/mindustry/world/blocks/storage/CoreBlock.java b/core/src/mindustry/world/blocks/storage/CoreBlock.java index b8c240e95d..1acf5d61c3 100644 --- a/core/src/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/mindustry/world/blocks/storage/CoreBlock.java @@ -333,7 +333,7 @@ public class CoreBlock extends StorageBlock{ @Override public void itemTaken(Item item){ - if(state.isCampaign()){ + if(state.isCampaign() && team == state.rules.defaultTeam){ //update item taken amount state.secinfo.handleCoreItem(item, -1); } @@ -342,7 +342,9 @@ public class CoreBlock extends StorageBlock{ @Override public void handleItem(Building source, Item item){ if(net.server() || !net.active()){ - state.secinfo.handleCoreItem(item, 1); + if(team == state.rules.defaultTeam){ + state.secinfo.handleCoreItem(item, 1); + } if(items.get(item) >= getMaximumAccepted(item)){ //create item incineration effect at random intervals diff --git a/core/src/mindustry/world/blocks/storage/StorageBlock.java b/core/src/mindustry/world/blocks/storage/StorageBlock.java index a8a5578d95..b4bef2c05c 100644 --- a/core/src/mindustry/world/blocks/storage/StorageBlock.java +++ b/core/src/mindustry/world/blocks/storage/StorageBlock.java @@ -46,7 +46,9 @@ public class StorageBlock extends Block{ @Override public void handleItem(Building source, Item item){ if(linkedCore != null){ - incinerateEffect(this, source); + if(linkedCore.items.get(item) >= ((CoreBuild)linkedCore).storageCapacity){ + incinerateEffect(this, source); + } ((CoreBuild)linkedCore).noEffect = true; linkedCore.handleItem(source, item); }else{ From fd54c66726c7152bb44bc0e7baec0391edbcdf3c Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Fri, 16 Oct 2020 22:26:50 +0100 Subject: [PATCH 20/55] make ptile/edge/corner mutable --- .../mindustry/graphics/g3d/PlanetGrid.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/core/src/mindustry/graphics/g3d/PlanetGrid.java b/core/src/mindustry/graphics/g3d/PlanetGrid.java index 3f5ee0630a..c0c7ebbe9e 100644 --- a/core/src/mindustry/graphics/g3d/PlanetGrid.java +++ b/core/src/mindustry/graphics/g3d/PlanetGrid.java @@ -221,12 +221,12 @@ public class PlanetGrid{ } public static class Ptile{ - public final int id; - public final int edgeCount; + public int id; + public int edgeCount; - public final Ptile[] tiles; - public final Corner[] corners; - public final Edge[] edges; + public Ptile[] tiles; + public Corner[] corners; + public Edge[] edges; public Vec3 v = new Vec3(); @@ -241,11 +241,11 @@ public class PlanetGrid{ } public static class Corner{ - public final int id; - public final Ptile[] tiles = new Ptile[3]; - public final Corner[] corners = new Corner[3]; - public final Edge[] edges = new Edge[3]; - public final Vec3 v = new Vec3(); + public int id; + public Ptile[] tiles = new Ptile[3]; + public Corner[] corners = new Corner[3]; + public Edge[] edges = new Edge[3]; + public Vec3 v = new Vec3(); public Corner(int id){ this.id = id; @@ -253,9 +253,9 @@ public class PlanetGrid{ } public static class Edge{ - public final int id; - public final Ptile[] tiles = new Ptile[2]; - public final Corner[] corners = new Corner[2]; + public int id; + public Ptile[] tiles = new Ptile[2]; + public Corner[] corners = new Corner[2]; public Edge(int id){ this.id = id; From 97b0461d7ff8b05afb459cc508f7149b65d8062a Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Fri, 16 Oct 2020 23:00:06 +0100 Subject: [PATCH 21/55] allow modded planets to customize drawing --- core/src/mindustry/graphics/g3d/PlanetRenderer.java | 4 +++- core/src/mindustry/type/Planet.java | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/graphics/g3d/PlanetRenderer.java b/core/src/mindustry/graphics/g3d/PlanetRenderer.java index e3eb74a7b5..75e9989232 100644 --- a/core/src/mindustry/graphics/g3d/PlanetRenderer.java +++ b/core/src/mindustry/graphics/g3d/PlanetRenderer.java @@ -110,8 +110,10 @@ public class PlanetRenderer implements Disposable{ } private void renderPlanet(Planet planet){ + if(!planet.visible()) return; + //render planet at offsetted position in the world - planet.mesh.render(cam.combined, planet.getTransform(mat)); + planet.render(cam.combined, planet.getTransform(mat)); renderOrbit(planet); diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index 6153aa4721..47c8bc1750 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -264,4 +264,12 @@ public class Planet extends UnlockableContent{ public ContentType getContentType(){ return ContentType.planet; } + + public boolean visible(){ + return true; + } + + public void draw(Mat3D projection, Mat3d Transform){ + mesh.render(projection, transform); + } } From 060152fc2959b4df337bfeb933e3ad0ad48820f3 Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Fri, 16 Oct 2020 23:06:46 +0100 Subject: [PATCH 22/55] make calc stuff pkg private again --- core/src/mindustry/graphics/g3d/PlanetGrid.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/graphics/g3d/PlanetGrid.java b/core/src/mindustry/graphics/g3d/PlanetGrid.java index c0c7ebbe9e..8fb19dff56 100644 --- a/core/src/mindustry/graphics/g3d/PlanetGrid.java +++ b/core/src/mindustry/graphics/g3d/PlanetGrid.java @@ -187,36 +187,36 @@ public class PlanetGrid{ } } - public static int pos(Ptile t, Ptile n){ + static int pos(Ptile t, Ptile n){ for(int i = 0; i < t.edgeCount; i++) if(t.tiles[i] == n) return i; return -1; } - public static int pos(Ptile t, Corner c){ + static int pos(Ptile t, Corner c){ for(int i = 0; i < t.edgeCount; i++) if(t.corners[i] == c) return i; return -1; } - public static int pos(Corner c, Corner n){ + static int pos(Corner c, Corner n){ for(int i = 0; i < 3; i++) if(c.corners[i] == n) return i; return -1; } - public static int tileCount(int size){ + static int tileCount(int size){ return 10 * Mathf.pow(3, size) + 2; } - public static int cornerCount(int size){ + static int cornerCount(int size){ return 20 * Mathf.pow(3, size); } - public static int edgeCount(int size){ + static int edgeCount(int size){ return 30 * Mathf.pow(3, size); } From 0fa947bfaa4bc7dd4a0242859267ccb2b20ed7a3 Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Fri, 16 Oct 2020 23:22:39 +0100 Subject: [PATCH 23/55] make calc stuff pkg private again --- core/src/mindustry/graphics/g3d/PlanetGrid.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/graphics/g3d/PlanetGrid.java b/core/src/mindustry/graphics/g3d/PlanetGrid.java index 8fb19dff56..380f937658 100644 --- a/core/src/mindustry/graphics/g3d/PlanetGrid.java +++ b/core/src/mindustry/graphics/g3d/PlanetGrid.java @@ -163,7 +163,7 @@ public class PlanetGrid{ return grid; } - public static void addCorner(int id, PlanetGrid grid, int t1, int t2, int t3){ + static void addCorner(int id, PlanetGrid grid, int t1, int t2, int t3){ Corner c = grid.corners[id]; Ptile[] t = {grid.tiles[t1], grid.tiles[t2], grid.tiles[t3]}; c.v.set(t[0].v).add(t[1].v).add(t[2].v).nor(); @@ -173,7 +173,7 @@ public class PlanetGrid{ } } - public static void addEdge(int id, PlanetGrid grid, int t1, int t2){ + static void addEdge(int id, PlanetGrid grid, int t1, int t2){ Edge e = grid.edges[id]; Ptile[] t = {grid.tiles[t1], grid.tiles[t2]}; Corner[] c = { From fc1b03f3226c483aad5a0157f60022b6eea35bb6 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 16 Oct 2020 20:09:48 -0400 Subject: [PATCH 24/55] Various tweaks --- core/src/mindustry/content/UnitTypes.java | 5 ++--- core/src/mindustry/core/Logic.java | 10 ++++++++- core/src/mindustry/game/DefaultWaves.java | 8 +++---- core/src/mindustry/game/SectorInfo.java | 4 ++++ .../src/mindustry/graphics/BlockRenderer.java | 21 ++++++++++--------- .../src/mindustry/graphics/LightRenderer.java | 1 - core/src/mindustry/maps/SectorDamage.java | 15 +++++++++---- .../world/blocks/storage/StorageBlock.java | 2 +- 8 files changed, 42 insertions(+), 24 deletions(-) diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 9a1b851118..b9189ec64e 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -872,7 +872,6 @@ public class UnitTypes implements ContentList{ drag = 0.01f; flying = true; health = 75; - faceTarget = false; engineOffset = 5.5f; range = 140f; @@ -1449,13 +1448,13 @@ public class UnitTypes implements ContentList{ trailMult = 0.8f; hitEffect = Fx.massiveExplosion; knockback = 1.5f; - lifetime = 140f; + lifetime = 100f; height = 15.5f; width = 15f; collidesTiles = false; ammoMultiplier = 4f; splashDamageRadius = 60f; - splashDamage = 85f; + splashDamage = 80f; backColor = Pal.missileYellowBack; frontColor = Pal.missileYellow; trailEffect = Fx.artilleryTrail; diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 88aeeabed9..c2274922de 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -96,6 +96,11 @@ public class Logic implements ApplicationListener{ Events.on(WorldLoadEvent.class, e -> { //enable infinite ammo for wave team by default state.rules.waveTeam.rules().infiniteAmmo = true; + if(state.isCampaign()){ + //enable building AI + state.rules.waveTeam.rules().ai = true; + state.rules.waveTeam.rules().infiniteResources = true; + } //save settings Core.settings.manualSave(); @@ -174,9 +179,12 @@ public class Logic implements ApplicationListener{ } //if there's a "win" wave and no enemies are present, win automatically - if(state.rules.waves && state.enemies == 0 && state.rules.winWave > 0 && state.wave >= state.rules.winWave && !spawner.isSpawning()){ + if(state.rules.waves && (state.enemies == 0 && state.rules.winWave > 0 && state.wave >= state.rules.winWave && !spawner.isSpawning()) || + (state.rules.attackMode && state.rules.waveTeam.cores().isEmpty())){ //the sector has been conquered - waves get disabled state.rules.waves = false; + //disable attack mode + state.rules.attackMode = false; //fire capture event Events.fire(new SectorCaptureEvent(state.rules.sector)); diff --git a/core/src/mindustry/game/DefaultWaves.java b/core/src/mindustry/game/DefaultWaves.java index 12d1d28dfe..f3c98f9fb4 100644 --- a/core/src/mindustry/game/DefaultWaves.java +++ b/core/src/mindustry/game/DefaultWaves.java @@ -81,7 +81,7 @@ public class DefaultWaves{ effect = StatusEffects.overdrive; }}, - new SpawnGroup(mace){{ + new SpawnGroup(pulsar){{ begin = 120; spacing = 2; unitScaling = 3; @@ -122,7 +122,7 @@ public class DefaultWaves{ shieldScaling = 30; }}, - new SpawnGroup(dagger){{ + new SpawnGroup(nova){{ begin = 35; spacing = 3; unitAmount = 4; @@ -233,7 +233,7 @@ public class DefaultWaves{ shieldScaling = 20f; }}, - new SpawnGroup(atrax){{ + new SpawnGroup(toxopid){{ begin = 210; unitAmount = 1; unitScaling = 1; @@ -258,7 +258,7 @@ public class DefaultWaves{ {nova, pulsar, quasar, vela, corvus}, {crawler, atrax, spiroct, arkyid, toxopid}, //{risso, minke, bryde, sei, omura}, //questionable choices - //{mono, poly, mega, quad, oct}, //do not attack + {poly, poly, mega, quad, quad}, {flare, horizon, zenith, antumbra, eclipse} }; diff --git a/core/src/mindustry/game/SectorInfo.java b/core/src/mindustry/game/SectorInfo.java index 1d928b00cd..04e0be38ef 100644 --- a/core/src/mindustry/game/SectorInfo.java +++ b/core/src/mindustry/game/SectorInfo.java @@ -41,6 +41,8 @@ public class SectorInfo{ public Seq resources = new Seq<>(); /** Whether waves are enabled here. */ public boolean waves = true; + /** Whether attack mode is enabled here. */ + public boolean attack = false; /** Wave # from state */ public int wave = 1, winWave = -1; /** Time between waves. */ @@ -103,6 +105,7 @@ public class SectorInfo{ state.rules.waves = waves; state.rules.waveSpacing = waveSpacing; state.rules.winWave = winWave; + state.rules.attackMode = attack; CoreBuild entity = state.rules.defaultTeam.core(); if(entity != null){ @@ -135,6 +138,7 @@ public class SectorInfo{ wave = state.wave; winWave = state.rules.winWave; waves = state.rules.waves; + attack = state.rules.attackMode; hasCore = entity != null; bestCoreType = !hasCore ? Blocks.air : state.rules.defaultTeam.cores().max(e -> e.block.size).block; storageCapacity = entity != null ? entity.storageCapacity : 0; diff --git a/core/src/mindustry/graphics/BlockRenderer.java b/core/src/mindustry/graphics/BlockRenderer.java index 223540e601..afe2e3182b 100644 --- a/core/src/mindustry/graphics/BlockRenderer.java +++ b/core/src/mindustry/graphics/BlockRenderer.java @@ -38,7 +38,7 @@ public class BlockRenderer implements Disposable{ private FrameBuffer dark = new FrameBuffer(); private Seq outArray2 = new Seq<>(); private Seq shadowEvents = new Seq<>(); - private IntSet processedEntities = new IntSet(), processedLinks = new IntSet(); + private IntSet procEntities = new IntSet(), procLinks = new IntSet(), procLights = new IntSet(); private boolean displayStatus = false; public BlockRenderer(){ @@ -191,8 +191,9 @@ public class BlockRenderer implements Disposable{ tileview.clear(); lightview.clear(); - processedEntities.clear(); - processedLinks.clear(); + procEntities.clear(); + procLinks.clear(); + procLights.clear(); int minx = Math.max(avgx - rangex - expandr, 0); int miny = Math.max(avgy - rangey - expandr, 0); @@ -209,25 +210,25 @@ public class BlockRenderer implements Disposable{ tile = tile.build.tile; } - if(block != Blocks.air && block.cacheLayer == CacheLayer.normal && (tile.build == null || !processedEntities.contains(tile.build.id))){ + if(block != Blocks.air && block.cacheLayer == CacheLayer.normal && (tile.build == null || !procEntities.contains(tile.build.id))){ if(block.expanded || !expanded){ - if(tile.build == null || processedLinks.add(tile.build.id)){ + if(tile.build == null || procLinks.add(tile.build.id)){ tileview.add(tile); if(tile.build != null){ - processedEntities.add(tile.build.id); - processedLinks.add(tile.build.id); + procEntities.add(tile.build.id); + procLinks.add(tile.build.id); } } } //lights are drawn even in the expanded range - if(tile.build != null || tile.block().emitLight){ + if(((tile.build != null && procLights.add(tile.build.pos())) || tile.block().emitLight)){ lightview.add(tile); } if(tile.build != null && tile.build.power != null && tile.build.power.links.size > 0){ for(Building other : tile.build.getPowerConnections(outArray2)){ - if(other.block instanceof PowerNode && processedLinks.add(other.id)){ //TODO need a generic way to render connections! + if(other.block instanceof PowerNode && procLinks.add(other.id)){ //TODO need a generic way to render connections! tileview.add(other.tile); } } @@ -235,7 +236,7 @@ public class BlockRenderer implements Disposable{ } //special case for floors - if(block == Blocks.air && tile.floor().emitLight){ + if((block == Blocks.air && tile.floor().emitLight) && procLights.add(tile.pos())){ lightview.add(tile); } } diff --git a/core/src/mindustry/graphics/LightRenderer.java b/core/src/mindustry/graphics/LightRenderer.java index 10ffa727b6..0a05c7409b 100644 --- a/core/src/mindustry/graphics/LightRenderer.java +++ b/core/src/mindustry/graphics/LightRenderer.java @@ -100,7 +100,6 @@ public class LightRenderer{ Draw.vert(ledge.texture, vertices, 0, vertices.length); - Vec2 v3 = Tmp.v2.trnsExact(rot, stroke); u = ledge.u; diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 52a129c0b7..325881760b 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -11,6 +11,7 @@ import mindustry.entities.abilities.*; import mindustry.game.*; import mindustry.gen.*; import mindustry.logic.*; +import mindustry.type.*; import mindustry.world.*; import mindustry.world.blocks.defense.*; import mindustry.world.blocks.defense.turrets.*; @@ -252,7 +253,10 @@ public class SectorDamage{ if(unit.isPlayer()) continue; if(unit.team == state.rules.defaultTeam){ - sumHealth += unit.health + unit.shield; + //scale health based on armor - yes, this is inaccurate, but better than nothing + float healthMult = 1f + Mathf.clamp(unit.armor / 20f); + + sumHealth += unit.health*healthMult + unit.shield; sumDps += unit.type().dpsEstimate; if(unit.abilities.find(a -> a instanceof HealFieldAbility) instanceof HealFieldAbility h){ sumRps += h.amount / h.reload * 60f; @@ -277,10 +281,12 @@ public class SectorDamage{ } for(SpawnGroup group : state.rules.spawns){ + float healthMult = 1f + Mathf.clamp(group.type.armor / 20f); + StatusEffect effect = (group.effect == null ? StatusEffects.none : group.effect); int spawned = group.getSpawned(wave); if(spawned <= 0) continue; - sumWaveHealth += spawned * (group.getShield(wave) + group.type.health); - sumWaveDps += spawned * group.type.dpsEstimate; + sumWaveHealth += spawned * (group.getShield(wave) + group.type.health * effect.healthMultiplier * healthMult); + sumWaveDps += spawned * group.type.dpsEstimate * effect.damageMultiplier; } waveDps.add(new Vec2(wave, sumWaveDps)); waveHealth.add(new Vec2(wave, sumWaveHealth)); @@ -295,7 +301,8 @@ public class SectorDamage{ info.waveDpsBase = reg.intercept; info.waveDpsSlope = reg.slope; - info.sumHealth = sumHealth; + //enemy units like to aim for a lot of non-essential things, so increase resulting health slightly + info.sumHealth = sumHealth * 1.2f; info.sumDps = sumDps; info.sumRps = sumRps; diff --git a/core/src/mindustry/world/blocks/storage/StorageBlock.java b/core/src/mindustry/world/blocks/storage/StorageBlock.java index b4bef2c05c..71045e166b 100644 --- a/core/src/mindustry/world/blocks/storage/StorageBlock.java +++ b/core/src/mindustry/world/blocks/storage/StorageBlock.java @@ -26,7 +26,7 @@ public class StorageBlock extends Block{ } public static void incinerateEffect(Building self, Building source){ - if(Mathf.chance(0.1)){ + if(Mathf.chance(0.3)){ Tile edge = Edges.getFacingEdge(source, self); Tile edge2 = Edges.getFacingEdge(self, source); if(edge != null && edge2 != null){ From 05b77d787e109c38cd2f9a714b71abb80bd151aa Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Sat, 17 Oct 2020 12:10:52 +0100 Subject: [PATCH 25/55] hide orbits of hidden planets --- core/src/mindustry/graphics/g3d/PlanetRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/graphics/g3d/PlanetRenderer.java b/core/src/mindustry/graphics/g3d/PlanetRenderer.java index 75e9989232..734a3efbdf 100644 --- a/core/src/mindustry/graphics/g3d/PlanetRenderer.java +++ b/core/src/mindustry/graphics/g3d/PlanetRenderer.java @@ -140,7 +140,7 @@ public class PlanetRenderer implements Disposable{ } private void renderOrbit(Planet planet){ - if(planet.parent == null) return; + if(planet.parent == null || !planet.visible()) return; Vec3 center = planet.parent.position; float radius = planet.orbitRadius; From 54b0d308bed46dab324f9be9eb3d6ea84e2235c3 Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Sat, 17 Oct 2020 12:16:47 +0100 Subject: [PATCH 26/55] h --- core/src/mindustry/type/Planet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index 47c8bc1750..07147b5cd9 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -269,7 +269,7 @@ public class Planet extends UnlockableContent{ return true; } - public void draw(Mat3D projection, Mat3d Transform){ + public void draw(Mat3D projection, Mat3D Transform){ mesh.render(projection, transform); } } From 8e0c5023c934cc1d8823c01b2c77783b30c9b67b Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Sat, 17 Oct 2020 12:28:46 +0100 Subject: [PATCH 27/55] hh --- core/src/mindustry/graphics/g3d/PlanetRenderer.java | 2 +- core/src/mindustry/type/Planet.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/mindustry/graphics/g3d/PlanetRenderer.java b/core/src/mindustry/graphics/g3d/PlanetRenderer.java index 734a3efbdf..33176408c8 100644 --- a/core/src/mindustry/graphics/g3d/PlanetRenderer.java +++ b/core/src/mindustry/graphics/g3d/PlanetRenderer.java @@ -113,7 +113,7 @@ public class PlanetRenderer implements Disposable{ if(!planet.visible()) return; //render planet at offsetted position in the world - planet.render(cam.combined, planet.getTransform(mat)); + planet.draw(cam.combined, planet.getTransform(mat)); renderOrbit(planet); diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index 07147b5cd9..e67a4a493f 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -269,7 +269,7 @@ public class Planet extends UnlockableContent{ return true; } - public void draw(Mat3D projection, Mat3D Transform){ + public void draw(Mat3D projection, Mat3D transform){ mesh.render(projection, transform); } } From c3d0819cc114165acdfa66bdf12ddb28aba8a032 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 17 Oct 2020 09:17:16 -0400 Subject: [PATCH 28/55] Fixed #2988 --- core/src/mindustry/world/blocks/campaign/LaunchPad.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/src/mindustry/world/blocks/campaign/LaunchPad.java b/core/src/mindustry/world/blocks/campaign/LaunchPad.java index dd1cc69007..860eb522d2 100644 --- a/core/src/mindustry/world/blocks/campaign/LaunchPad.java +++ b/core/src/mindustry/world/blocks/campaign/LaunchPad.java @@ -115,6 +115,8 @@ public class LaunchPad extends Block{ public void display(Table table){ super.display(table); + if(!state.isCampaign()) return; + table.row(); table.label(() -> { Sector dest = state.secinfo.getRealDestination(); From e05ba886e8d4fca3e3b0a1905b835dabd493eb75 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 17 Oct 2020 09:37:09 -0400 Subject: [PATCH 29/55] Update README.md --- README.md | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 5c9c797297..209775b7f6 100644 --- a/README.md +++ b/README.md @@ -9,34 +9,34 @@ _[Trello Board](https://trello.com/b/aE2tcUwF/mindustry-40-plans)_ _[Wiki](https://mindustrygame.github.io/wiki)_ _[Javadoc](https://mindustrygame.github.io/docs/)_ -### Contributing +## Contributing See [CONTRIBUTING](CONTRIBUTING.md). -### Building +## Building Bleeding-edge builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases). If you'd rather compile on your own, follow these instructions. First, make sure you have [JDK 14](https://adoptopenjdk.net/) installed. Open a terminal in the root directory, `cd` to the Mindustry folder and run the following commands: -#### Windows +### Windows _Running:_ `gradlew desktop:run` _Building:_ `gradlew desktop:dist` _Sprite Packing:_ `gradlew tools:pack` -#### Linux/Mac OS +### Linux/Mac OS _Running:_ `./gradlew desktop:run` _Building:_ `./gradlew desktop:dist` _Sprite Packing:_ `./gradlew tools:pack` -#### Server +### Server Server builds are bundled with each released build (in Releases). If you'd rather compile on your own, replace 'desktop' with 'server', e.g. `gradlew server:dist`. -#### Android +### Android 1. Install the Android SDK [here.](https://developer.android.com/studio#downloads) Make sure you're downloading the "Command line tools only", as Android Studio is not required. 2. Set the `ANDROID_HOME` environment variable to point to your unzipped Android SDK directory. @@ -44,20 +44,29 @@ Server builds are bundled with each released build (in Releases). If you'd rathe To debug the application on a connected phone, run `gradlew android:installDebug android:run`. -##### Troubleshooting +### Troubleshooting + +#### Permission Denied If the terminal returns `Permission denied` or `Command not found` on Mac/Linux, run `chmod +x ./gradlew` before running `./gradlew`. *This is a one-time procedure.* +#### Can not attach to current VM / Error during attachment using [...] + +This is a problem related to [Jabel](https://github.com/bsideup/jabel), which I use to compile Java 8-compatible bytecode while using Java 9+ language features. +I don't know of a complete fix to this issue. However, if you're getting the error when running through IntelliJ, a workaround is to launch through Gradle *once*, which starts a daemon and avoids the problem in future runs through IntelliJ. + + + --- Gradle may take up to several minutes to download files. Be patient.
After building, the output .JAR file should be in `/desktop/build/libs/Mindustry.jar` for desktop builds, and in `/server/build/libs/server-release.jar` for server builds. -### Feature Requests +## Feature Requests Post feature requests and feedback [here](https://github.com/Anuken/Mindustry-Suggestions/issues/new/choose). -### Downloads +## Downloads [Get it on Itch.io Date: Sat, 17 Oct 2020 09:59:20 -0400 Subject: [PATCH 30/55] Checks to prevent uncaptureable sectors --- core/src/mindustry/ai/BaseAI.java | 2 +- core/src/mindustry/game/Rules.java | 2 ++ core/src/mindustry/game/SectorInfo.java | 13 +++++++++++-- .../maps/planet/SerpuloPlanetGenerator.java | 6 +++--- core/src/mindustry/type/SectorPreset.java | 1 + .../mindustry/world/blocks/units/UnitFactory.java | 7 +++++++ 6 files changed, 25 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/ai/BaseAI.java b/core/src/mindustry/ai/BaseAI.java index 3b45d8a17b..3a4965aa88 100644 --- a/core/src/mindustry/ai/BaseAI.java +++ b/core/src/mindustry/ai/BaseAI.java @@ -40,7 +40,7 @@ public class BaseAI{ } public void update(){ - if(timer.get(timerSpawn, 60) && data.hasCore()){ + if(data.team.rules().aiCoreSpawn && timer.get(timerSpawn, 60 * 2.5f) && data.hasCore()){ CoreBlock block = (CoreBlock)data.core().block; //create AI core unit diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index 329e69c92a..2a927cc59b 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -106,6 +106,8 @@ public class Rules{ public boolean ai; /** TODO Tier of blocks/designs that the AI uses for building. [0, 1]*/ public float aiTier = 0f; + /** Whether, when AI is enabled, ships should be spawned from the core. */ + public boolean aiCoreSpawn = true; /** If true, blocks don't require power or resources. */ public boolean cheat; /** If true, resources are not consumed when building. */ diff --git a/core/src/mindustry/game/SectorInfo.java b/core/src/mindustry/game/SectorInfo.java index 04e0be38ef..f9e30f7d02 100644 --- a/core/src/mindustry/game/SectorInfo.java +++ b/core/src/mindustry/game/SectorInfo.java @@ -101,6 +101,17 @@ public class SectorInfo{ /** Write contents of meta into main storage. */ public void write(){ + //enable attack mode when there's a core. + if(state.rules.waveTeam.core() != null){ + attack = true; + winWave = 0; + } + + //if there are infinite waves and no win wave, add a win wave. + if(waves && winWave <= 0 && !attack){ + winWave = 30; + } + state.wave = wave; state.rules.waves = waves; state.rules.waveSpacing = waveSpacing; @@ -114,8 +125,6 @@ public class SectorInfo{ //ensure capacity. entity.items.each((i, a) -> entity.items.set(i, Math.min(a, entity.storageCapacity))); } - - //TODO write items. } /** Prepare data for writing to a save. */ diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index ee2f6b437c..9065467dff 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -412,12 +412,12 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ if(sector.hasEnemyBase()){ basegen.generate(tiles, enemies.map(r -> tiles.getn(r.x, r.y)), tiles.get(spawn.x, spawn.y), state.rules.waveTeam, sector, difficulty); - state.rules.attackMode = true; + state.rules.attackMode = sector.info.attack = true; }else{ - state.rules.winWave = 15 * (int)Math.max(difficulty * 10, 1); + state.rules.winWave = sector.info.winWave = 15 * (int)Math.max(difficulty * 10, 1); } - state.rules.waves = true; + state.rules.waves = sector.info.waves = true; //TODO better waves state.rules.spawns = DefaultWaves.generate(difficulty); diff --git a/core/src/mindustry/type/SectorPreset.java b/core/src/mindustry/type/SectorPreset.java index 923d023b25..f08374fa70 100644 --- a/core/src/mindustry/type/SectorPreset.java +++ b/core/src/mindustry/type/SectorPreset.java @@ -23,6 +23,7 @@ public class SectorPreset extends UnlockableContent{ super(name); this.generator = new FileMapGenerator(name); this.planet = planet; + sector %= planet.sectors.size; this.sector = planet.sectors.get(sector); planet.preset(sector, this); diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index 74248f9932..52a3af85c7 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -14,6 +14,7 @@ import mindustry.entities.*; import mindustry.entities.units.*; import mindustry.gen.*; import mindustry.graphics.*; +import mindustry.logic.*; import mindustry.type.*; import mindustry.ui.*; import mindustry.world.blocks.*; @@ -122,6 +123,12 @@ public class UnitFactory extends UnitBlock{ return currentPlan == -1 ? 0 : progress / plans.get(currentPlan).time; } + @Override + public Object senseObject(LAccess sensor){ + if(sensor == LAccess.config) return currentPlan == -1 ? null : plans.get(currentPlan).unit; + return super.senseObject(sensor); + } + @Override public void buildConfiguration(Table table){ Seq units = Seq.with(plans).map(u -> u.unit).filter(u -> u.unlockedNow()); From 35a86a1aacf77fccb718dd23d61565a985130947 Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Sat, 17 Oct 2020 15:34:00 +0100 Subject: [PATCH 31/55] add universe draw events --- core/src/mindustry/game/EventType.java | 5 ++- .../graphics/g3d/PlanetRenderer.java | 31 +++++++++++-------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index 0ffb2f7369..b786bb47f7 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -35,7 +35,10 @@ public class EventType{ preDraw, postDraw, uiDrawBegin, - uiDrawEnd + uiDrawEnd, + //before/after bloom used, skybox or planets drawn - use Vars.renderer.planets + universeDrawBegin, + universeDrawEnd } public static class WinEvent{} diff --git a/core/src/mindustry/graphics/g3d/PlanetRenderer.java b/core/src/mindustry/graphics/g3d/PlanetRenderer.java index e3eb74a7b5..14a4cc8820 100644 --- a/core/src/mindustry/graphics/g3d/PlanetRenderer.java +++ b/core/src/mindustry/graphics/g3d/PlanetRenderer.java @@ -10,6 +10,7 @@ import arc.math.geom.*; import arc.struct.*; import arc.util.*; import mindustry.content.*; +import mindustry.game.EventType.*; import mindustry.graphics.*; import mindustry.graphics.g3d.PlanetGrid.*; import mindustry.type.*; @@ -38,19 +39,19 @@ public class PlanetRenderer implements Disposable{ public float zoom = 1f; private final Mesh[] outlines = new Mesh[10]; - private final PlaneBatch3D projector = new PlaneBatch3D(); - private final Mat3D mat = new Mat3D(); - private final FrameBuffer buffer = new FrameBuffer(2, 2, true); - private PlanetInterfaceRenderer irenderer; + public final PlaneBatch3D projector = new PlaneBatch3D(); + public final Mat3D mat = new Mat3D(); + public final FrameBuffer buffer = new FrameBuffer(2, 2, true); + public PlanetInterfaceRenderer irenderer; - private final Bloom bloom = new Bloom(Core.graphics.getWidth()/4, Core.graphics.getHeight()/4, true, false){{ + public final Bloom bloom = new Bloom(Core.graphics.getWidth()/4, Core.graphics.getHeight()/4, true, false){{ setThreshold(0.8f); blurPasses = 6; }}; - private final Mesh atmosphere = MeshBuilder.buildHex(Color.white, 2, false, 1.5f); + public final Mesh atmosphere = MeshBuilder.buildHex(Color.white, 2, false, 1.5f); //seed: 8kmfuix03fw - private final CubemapMesh skybox = new CubemapMesh(new Cubemap("cubemaps/stars/")); + public final CubemapMesh skybox = new CubemapMesh(new Cubemap("cubemaps/stars/")); public PlanetRenderer(){ camPos.set(0, 0f, camLength); @@ -82,6 +83,8 @@ public class PlanetRenderer implements Disposable{ projector.proj(cam.combined); batch.proj(cam.combined); + Events.fire(Trigger.universeDrawBegin); + beginBloom(); skybox.render(cam.combined); @@ -90,6 +93,8 @@ public class PlanetRenderer implements Disposable{ endBloom(); + Events.fire(Trigger.universeDrawEnd); + Gl.enable(Gl.blend); irenderer.renderProjections(); @@ -100,16 +105,16 @@ public class PlanetRenderer implements Disposable{ cam.update(); } - private void beginBloom(){ + public void beginBloom(){ bloom.resize(Core.graphics.getWidth() / 4, Core.graphics.getHeight() / 4); bloom.capture(); } - private void endBloom(){ + public void endBloom(){ bloom.render(); } - private void renderPlanet(Planet planet){ + public void renderPlanet(Planet planet){ //render planet at offsetted position in the world planet.mesh.render(cam.combined, planet.getTransform(mat)); @@ -137,7 +142,7 @@ public class PlanetRenderer implements Disposable{ } } - private void renderOrbit(Planet planet){ + public void renderOrbit(Planet planet){ if(planet.parent == null) return; Vec3 center = planet.parent.position; @@ -147,7 +152,7 @@ public class PlanetRenderer implements Disposable{ batch.flush(Gl.lineLoop); } - private void renderSectors(Planet planet){ + public void renderSectors(Planet planet){ //apply transformed position batch.proj().mul(planet.getTransform(mat)); @@ -268,7 +273,7 @@ public class PlanetRenderer implements Disposable{ } } - private Mesh outline(int size){ + public Mesh outline(int size){ if(outlines[size] == null){ outlines[size] = MeshBuilder.buildHex(new HexMesher(){ @Override From 46ec45781937b9ae085e6963b4a9c4b4a17cd670 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 17 Oct 2020 10:37:28 -0400 Subject: [PATCH 32/55] Cleanup --- core/assets/bundles/bundle.properties | 3 +-- core/src/mindustry/ai/BaseAI.java | 2 +- core/src/mindustry/ai/WaveSpawner.java | 2 +- core/src/mindustry/ai/types/BuilderAI.java | 4 ++-- core/src/mindustry/ai/types/FlyingAI.java | 4 ++-- core/src/mindustry/ai/types/FormationAI.java | 8 +++---- core/src/mindustry/ai/types/GroundAI.java | 8 +++---- core/src/mindustry/ai/types/LogicAI.java | 4 ++-- core/src/mindustry/ai/types/MinerAI.java | 12 +++++----- core/src/mindustry/ai/types/RepairAI.java | 6 ++--- core/src/mindustry/ai/types/SuicideAI.java | 10 ++++---- core/src/mindustry/async/PhysicsProcess.java | 2 +- core/src/mindustry/content/Fx.java | 6 ++--- core/src/mindustry/core/Logic.java | 2 +- core/src/mindustry/core/NetServer.java | 4 ++-- core/src/mindustry/entities/Units.java | 2 +- .../mindustry/entities/comp/BuildingComp.java | 2 +- .../entities/comp/CommanderComp.java | 6 ++--- .../mindustry/entities/comp/PlayerComp.java | 8 +++---- .../mindustry/entities/comp/PuddleComp.java | 2 +- .../src/mindustry/entities/comp/UnitComp.java | 24 ++++++------------- .../entities/units/AIController.java | 8 +++---- core/src/mindustry/game/SpawnGroup.java | 18 ++++++++++++++ core/src/mindustry/game/Teams.java | 10 ++++---- .../mindustry/graphics/MinimapRenderer.java | 2 +- .../mindustry/graphics/OverlayRenderer.java | 2 +- core/src/mindustry/input/DesktopInput.java | 14 +++++------ core/src/mindustry/input/InputHandler.java | 14 +++++------ core/src/mindustry/input/MobileInput.java | 8 +++---- core/src/mindustry/logic/LExecutor.java | 2 +- core/src/mindustry/maps/SectorDamage.java | 4 ++-- core/src/mindustry/mod/ContentParser.java | 14 +++++++++-- core/src/mindustry/type/AmmoTypes.java | 4 ++-- core/src/mindustry/type/ItemStack.java | 7 ++++++ core/src/mindustry/type/StatusEffect.java | 2 +- core/src/mindustry/type/UnitType.java | 2 +- .../mindustry/ui/fragments/HudFragment.java | 2 +- .../blocks/defense/TractorBeamTurret.java | 2 +- .../world/blocks/payloads/UnitPayload.java | 4 ++-- .../world/blocks/units/Reconstructor.java | 14 +++++------ .../world/blocks/units/ResupplyPoint.java | 4 ++-- .../src/mindustry/desktop/steam/SStats.java | 2 +- 42 files changed, 142 insertions(+), 118 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 78c3259e9b..196b6e87af 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -100,8 +100,7 @@ committingchanges = Comitting Changes done = Done feature.unsupported = Your device does not support this feature. -mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry GitHub or Discord. -mods.alpha = [accent](Alpha) +mods.alphainfo = Keep in mind that mods are in alpha, and[scarlet] may be very buggy[].\nReport any issues you find to the Mindustry GitHub. mods = Mods mods.none = [lightgray]No mods found! mods.guide = Modding Guide diff --git a/core/src/mindustry/ai/BaseAI.java b/core/src/mindustry/ai/BaseAI.java index 3a4965aa88..b1f83d95d2 100644 --- a/core/src/mindustry/ai/BaseAI.java +++ b/core/src/mindustry/ai/BaseAI.java @@ -44,7 +44,7 @@ public class BaseAI{ CoreBlock block = (CoreBlock)data.core().block; //create AI core unit - if(!state.isEditor() && !Groups.unit.contains(u -> u.team() == data.team && u.type() == block.unitType)){ + if(!state.isEditor() && !Groups.unit.contains(u -> u.team() == data.team && u.type == block.unitType)){ Unit unit = block.unitType.create(data.team); unit.set(data.core()); unit.add(); diff --git a/core/src/mindustry/ai/WaveSpawner.java b/core/src/mindustry/ai/WaveSpawner.java index 99b52d40e5..91c7f61467 100644 --- a/core/src/mindustry/ai/WaveSpawner.java +++ b/core/src/mindustry/ai/WaveSpawner.java @@ -175,7 +175,7 @@ public class WaveSpawner{ } private void spawnEffect(Unit unit){ - Call.spawnEffect(unit.x, unit.y, unit.type()); + Call.spawnEffect(unit.x, unit.y, unit.type); Time.run(30f, unit::add); } diff --git a/core/src/mindustry/ai/types/BuilderAI.java b/core/src/mindustry/ai/types/BuilderAI.java index 8e8c74f986..c3558ca58a 100644 --- a/core/src/mindustry/ai/types/BuilderAI.java +++ b/core/src/mindustry/ai/types/BuilderAI.java @@ -79,7 +79,7 @@ public class BuilderAI extends AIController{ float dist = Math.min(cons.dst(unit) - buildingRange, 0); //make sure you can reach the request in time - if(dist / unit.type().speed < cons.buildCost * 0.9f){ + if(dist / unit.type.speed < cons.buildCost * 0.9f){ following = b; found = true; } @@ -112,7 +112,7 @@ public class BuilderAI extends AIController{ @Override public AIController fallback(){ - return unit.type().flying ? new FlyingAI() : new GroundAI(); + return unit.type.flying ? new FlyingAI() : new GroundAI(); } @Override diff --git a/core/src/mindustry/ai/types/FlyingAI.java b/core/src/mindustry/ai/types/FlyingAI.java index 0758f9016a..9d4c2d38f9 100644 --- a/core/src/mindustry/ai/types/FlyingAI.java +++ b/core/src/mindustry/ai/types/FlyingAI.java @@ -12,7 +12,7 @@ public class FlyingAI extends AIController{ @Override public void updateMovement(){ if(target != null && unit.hasWeapons() && command() == UnitCommand.attack){ - if(unit.type().weapons.first().rotate){ + if(unit.type.weapons.first().rotate){ moveTo(target, unit.range() * 0.8f); unit.lookAt(target); }else{ @@ -57,7 +57,7 @@ public class FlyingAI extends AIController{ vec.setAngle(Mathf.slerpDelta(unit.vel().angle(), vec.angle(), 0.6f)); } - vec.setLength(unit.type().speed); + vec.setLength(unit.type.speed); unit.moveAt(vec); } diff --git a/core/src/mindustry/ai/types/FormationAI.java b/core/src/mindustry/ai/types/FormationAI.java index d774719cab..ed175524d8 100644 --- a/core/src/mindustry/ai/types/FormationAI.java +++ b/core/src/mindustry/ai/types/FormationAI.java @@ -27,14 +27,14 @@ public class FormationAI extends AIController implements FormationMember{ @Override public void updateUnit(){ - UnitType type = unit.type(); + UnitType type = unit.type; if(leader.dead){ unit.resetController(); return; } - if(unit.type().canBoost && unit.canPassOn()){ + if(unit.type.canBoost && unit.canPassOn()){ unit.elevation = Mathf.approachDelta(unit.elevation, 0f, 0.08f); } @@ -43,7 +43,7 @@ public class FormationAI extends AIController implements FormationMember{ unit.aim(leader.aimX(), leader.aimY()); - if(unit.type().rotateShooting){ + if(unit.type.rotateShooting){ unit.lookAt(leader.aimX(), leader.aimY()); }else if(unit.moving()){ unit.lookAt(unit.vel.angle()); @@ -65,7 +65,7 @@ public class FormationAI extends AIController implements FormationMember{ CoreBuild core = unit.team.core(); - if(core != null && com.mineTile().drop() != null && unit.within(core, unit.type().range) && !unit.acceptsItem(com.mineTile().drop())){ + if(core != null && com.mineTile().drop() != null && unit.within(core, unit.type.range) && !unit.acceptsItem(com.mineTile().drop())){ if(core.acceptStack(unit.stack.item, unit.stack.amount, unit) > 0){ Call.transferItemTo(unit.stack.item, unit.stack.amount, unit.x, unit.y, core); diff --git a/core/src/mindustry/ai/types/GroundAI.java b/core/src/mindustry/ai/types/GroundAI.java index 157ed2eb9d..0134a424fc 100644 --- a/core/src/mindustry/ai/types/GroundAI.java +++ b/core/src/mindustry/ai/types/GroundAI.java @@ -45,13 +45,13 @@ public class GroundAI extends AIController{ } } - if(unit.type().canBoost && !unit.onSolid()){ + if(unit.type.canBoost && !unit.onSolid()){ unit.elevation = Mathf.approachDelta(unit.elevation, 0f, 0.08f); } - if(!Units.invalidateTarget(target, unit, unit.range()) && unit.type().rotateShooting){ - if(unit.type().hasWeapons()){ - unit.lookAt(Predict.intercept(unit, target, unit.type().weapons.first().bullet.speed)); + if(!Units.invalidateTarget(target, unit, unit.range()) && unit.type.rotateShooting){ + if(unit.type.hasWeapons()){ + unit.lookAt(Predict.intercept(unit, target, unit.type.weapons.first().bullet.speed)); } }else if(unit.moving()){ unit.lookAt(unit.vel().angle()); diff --git a/core/src/mindustry/ai/types/LogicAI.java b/core/src/mindustry/ai/types/LogicAI.java index 76b81794a2..1166c2ff96 100644 --- a/core/src/mindustry/ai/types/LogicAI.java +++ b/core/src/mindustry/ai/types/LogicAI.java @@ -98,7 +98,7 @@ public class LogicAI extends AIController{ } } - if(unit.type().canBoost && !unit.type().flying){ + if(unit.type.canBoost && !unit.type.flying){ unit.elevation = Mathf.approachDelta(unit.elevation, Mathf.num(boost || unit.onSolid()), 0.08f); } @@ -129,7 +129,7 @@ public class LogicAI extends AIController{ @Override protected boolean shouldShoot(){ - return shoot && !(unit.type().canBoost && boost); + return shoot && !(unit.type.canBoost && boost); } //always aim for the main target diff --git a/core/src/mindustry/ai/types/MinerAI.java b/core/src/mindustry/ai/types/MinerAI.java index d19b8e2c0a..aa7d1403c5 100644 --- a/core/src/mindustry/ai/types/MinerAI.java +++ b/core/src/mindustry/ai/types/MinerAI.java @@ -19,7 +19,7 @@ public class MinerAI extends AIController{ if(!(unit instanceof Minerc miner) || core == null) return; - if(miner.mineTile() != null && !miner.mineTile().within(unit, unit.type().range)){ + if(miner.mineTile() != null && !miner.mineTile().within(unit, unit.type.range)){ miner.mineTile(null); } @@ -36,7 +36,7 @@ public class MinerAI extends AIController{ } //if inventory is full, drop it off. - if(unit.stack.amount >= unit.type().itemCapacity || (targetItem != null && !unit.acceptsItem(targetItem))){ + if(unit.stack.amount >= unit.type.itemCapacity || (targetItem != null && !unit.acceptsItem(targetItem))){ mining = false; }else{ if(retarget() && targetItem != null){ @@ -44,9 +44,9 @@ public class MinerAI extends AIController{ } if(ore != null){ - moveTo(ore, unit.type().range / 2f); + moveTo(ore, unit.type.range / 2f); - if(unit.within(ore, unit.type().range)){ + if(unit.within(ore, unit.type.range)){ miner.mineTile(ore); } @@ -63,7 +63,7 @@ public class MinerAI extends AIController{ return; } - if(unit.within(core, unit.type().range)){ + if(unit.within(core, unit.type.range)){ if(core.acceptStack(unit.stack.item, unit.stack.amount, unit) > 0){ Call.transferItemTo(unit.stack.item, unit.stack.amount, unit.x, unit.y, core); } @@ -72,7 +72,7 @@ public class MinerAI extends AIController{ mining = true; } - circle(core, unit.type().range / 1.8f); + circle(core, unit.type.range / 1.8f); } } diff --git a/core/src/mindustry/ai/types/RepairAI.java b/core/src/mindustry/ai/types/RepairAI.java index cb60a3bfc9..36504f908d 100644 --- a/core/src/mindustry/ai/types/RepairAI.java +++ b/core/src/mindustry/ai/types/RepairAI.java @@ -12,7 +12,7 @@ public class RepairAI extends AIController{ if(target instanceof Building){ boolean shoot = false; - if(target.within(unit, unit.type().range)){ + if(target.within(unit, unit.type.range)){ unit.aim(target); shoot = true; } @@ -23,8 +23,8 @@ public class RepairAI extends AIController{ } if(target != null){ - if(!target.within(unit, unit.type().range * 0.65f) && target instanceof Building){ - moveTo(target, unit.type().range * 0.65f); + if(!target.within(unit, unit.type.range * 0.65f) && target instanceof Building){ + moveTo(target, unit.type.range * 0.65f); } unit.lookAt(target); diff --git a/core/src/mindustry/ai/types/SuicideAI.java b/core/src/mindustry/ai/types/SuicideAI.java index 2eae6e409f..0ef3ece228 100644 --- a/core/src/mindustry/ai/types/SuicideAI.java +++ b/core/src/mindustry/ai/types/SuicideAI.java @@ -21,7 +21,7 @@ public class SuicideAI extends GroundAI{ } if(retarget()){ - target = target(unit.x, unit.y, unit.range(), unit.type().targetAir, unit.type().targetGround); + target = target(unit.x, unit.y, unit.range(), unit.type.targetAir, unit.type.targetGround); } Building core = unit.closestEnemyCore(); @@ -30,11 +30,11 @@ public class SuicideAI extends GroundAI{ if(!Units.invalidateTarget(target, unit, unit.range()) && unit.hasWeapons()){ rotate = true; - shoot = unit.within(target, unit.type().weapons.first().bullet.range() + + shoot = unit.within(target, unit.type.weapons.first().bullet.range() + (target instanceof Building ? ((Building)target).block.size * Vars.tilesize / 2f : ((Hitboxc)target).hitSize() / 2f)); - if(unit.type().hasWeapons()){ - unit.aimLook(Predict.intercept(unit, target, unit.type().weapons.first().bullet.speed)); + if(unit.type.hasWeapons()){ + unit.aimLook(Predict.intercept(unit, target, unit.type.weapons.first().bullet.speed)); } //do not move toward walls or transport blocks @@ -65,7 +65,7 @@ public class SuicideAI extends GroundAI{ if(!blocked){ moveToTarget = true; //move towards target directly - unit.moveAt(vec.set(target).sub(unit).limit(unit.type().speed)); + unit.moveAt(vec.set(target).sub(unit).limit(unit.type.speed)); } } diff --git a/core/src/mindustry/async/PhysicsProcess.java b/core/src/mindustry/async/PhysicsProcess.java index 07d44d4717..a60dab7f68 100644 --- a/core/src/mindustry/async/PhysicsProcess.java +++ b/core/src/mindustry/async/PhysicsProcess.java @@ -57,7 +57,7 @@ public class PhysicsProcess implements AsyncProcess{ PhysicRef ref = entity.physref(); ref.body.layer = - entity.type().allowLegStep ? layerLegs : + entity.type.allowLegStep ? layerLegs : entity.isGrounded() ? layerGround : layerFlying; ref.x = entity.x(); ref.y = entity.y(); diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index 6ca6ccb24d..ca5bf9a0d0 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -56,7 +56,7 @@ public class Fx{ mixcol(Pal.accent, 1f); alpha(e.fout()); - rect(block ? ((BlockUnitc)select).tile().block.icon(Cicon.full) : select.type().icon(Cicon.full), select.x, select.y, block ? 0f : select.rotation - 90f); + rect(block ? ((BlockUnitc)select).tile().block.icon(Cicon.full) : select.type.icon(Cicon.full), select.x, select.y, block ? 0f : select.rotation - 90f); alpha(1f); Lines.stroke(e.fslope() * 1f); Lines.square(select.x, select.y, e.fout() * select.hitSize * 2f, 45); @@ -66,7 +66,7 @@ public class Fx{ }), unitDespawn = new Effect(100f, e -> { - if(!(e.data instanceof Unit) || e.data().type() == null) return; + if(!(e.data instanceof Unit) || e.data().type == null) return; Unit select = e.data(); float scl = e.fout(Interp.pow2Out); @@ -74,7 +74,7 @@ public class Fx{ Draw.scl *= scl; mixcol(Pal.accent, 1f); - rect(select.type().icon(Cicon.full), select.x, select.y, select.rotation - 90f); + rect(select.type.icon(Cicon.full), select.x, select.y, select.rotation - 90f); reset(); Draw.scl = p; diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index c2274922de..a96ea101a9 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -272,7 +272,7 @@ public class Logic implements ApplicationListener{ if(state.isGame()){ if(!net.client()){ - state.enemies = Groups.unit.count(u -> u.team() == state.rules.waveTeam && u.type().isCounted); + state.enemies = Groups.unit.count(u -> u.team() == state.rules.waveTeam && u.type.isCounted); } if(!state.isPaused()){ diff --git a/core/src/mindustry/core/NetServer.java b/core/src/mindustry/core/NetServer.java index 77ab732cf6..d9f944c1aa 100644 --- a/core/src/mindustry/core/NetServer.java +++ b/core/src/mindustry/core/NetServer.java @@ -575,7 +575,7 @@ public class NetServer implements ApplicationListener{ shooting = false; } - if(!player.dead() && (player.unit().type().flying || !player.unit().type().canBoost)){ + if(!player.dead() && (player.unit().type.flying || !player.unit().type.canBoost)){ boosting = false; } @@ -629,7 +629,7 @@ public class NetServer implements ApplicationListener{ Unit unit = player.unit(); long elapsed = Time.timeSinceMillis(con.lastReceivedClientTime); - float maxSpeed = ((player.unit().type().canBoost && player.unit().isFlying()) ? player.unit().type().boostMultiplier : 1f) * player.unit().type().speed; + float maxSpeed = ((player.unit().type.canBoost && player.unit().isFlying()) ? player.unit().type.boostMultiplier : 1f) * player.unit().type.speed; if(unit.isGrounded()){ maxSpeed *= unit.floorSpeedMultiplier(); } diff --git a/core/src/mindustry/entities/Units.java b/core/src/mindustry/entities/Units.java index 1babb75e33..e4591a0ed0 100644 --- a/core/src/mindustry/entities/Units.java +++ b/core/src/mindustry/entities/Units.java @@ -126,7 +126,7 @@ public class Units{ nearby(x, y, width, height, unit -> { if(boolResult) return; - if((unit.isGrounded() && !unit.type().hovering) == ground){ + if((unit.isGrounded() && !unit.type.hovering) == ground){ unit.hitbox(hitrect); if(hitrect.overlaps(x, y, width, height)){ diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 7e8bb19a1e..6891744fce 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -1295,7 +1295,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, case type -> block; case firstItem -> items == null ? null : items.first(); case config -> block.configurations.containsKey(Item.class) || block.configurations.containsKey(Liquid.class) ? config() : null; - case payloadType -> getPayload() instanceof UnitPayload p1 ? p1.unit.type() : getPayload() instanceof BuildPayload p2 ? p2.block() : null; + case payloadType -> getPayload() instanceof UnitPayload p1 ? p1.unit.type : getPayload() instanceof BuildPayload p2 ? p2.block() : null; default -> noSensed; }; diff --git a/core/src/mindustry/entities/comp/CommanderComp.java b/core/src/mindustry/entities/comp/CommanderComp.java index b0fbddcf85..e03147d63c 100644 --- a/core/src/mindustry/entities/comp/CommanderComp.java +++ b/core/src/mindustry/entities/comp/CommanderComp.java @@ -59,7 +59,7 @@ abstract class CommanderComp implements Entityc, Posc{ units.clear(); Units.nearby(team, x, y, 150f, u -> { - if(u.isAI() && include.get(u) && u != self() && u.type().flying == type.flying && u.hitSize <= hitSize * 1.1f){ + if(u.isAI() && include.get(u) && u != self() && u.type.flying == type.flying && u.hitSize <= hitSize * 1.1f){ units.add(u); } }); @@ -82,7 +82,7 @@ abstract class CommanderComp implements Entityc, Posc{ FormationAI ai; unit.controller(ai = new FormationAI(self(), formation)); spacing = Math.max(spacing, ai.formationSize()); - minFormationSpeed = Math.min(minFormationSpeed, unit.type().speed); + minFormationSpeed = Math.min(minFormationSpeed, unit.type.speed); } this.formation = formation; @@ -106,7 +106,7 @@ abstract class CommanderComp implements Entityc, Posc{ //reset controlled units for(Unit unit : controlling){ if(unit.controller().isBeingControlled(self())){ - unit.controller(unit.type().createController()); + unit.controller(unit.type.createController()); } } diff --git a/core/src/mindustry/entities/comp/PlayerComp.java b/core/src/mindustry/entities/comp/PlayerComp.java index 4ee481b032..736a1b68e5 100644 --- a/core/src/mindustry/entities/comp/PlayerComp.java +++ b/core/src/mindustry/entities/comp/PlayerComp.java @@ -79,7 +79,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra admin = typing = false; textFadeTime = 0f; if(!dead()){ - unit.controller(unit.type().createController()); + unit.controller(unit.type.createController()); unit = Nulls.unit; } } @@ -91,7 +91,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra @Replace public float clipSize(){ - return unit.isNull() ? 20 : unit.type().hitSize * 2f; + return unit.isNull() ? 20 : unit.type.hitSize * 2f; } @Override @@ -123,7 +123,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra deathTimer = 0; //update some basic state to sync things - if(unit.type().canBoost){ + if(unit.type.canBoost){ Tile tile = unit.tileOn(); unit.elevation = Mathf.approachDelta(unit.elevation, (tile != null && tile.solid()) || boosting ? 1f : 0f, 0.08f); } @@ -177,7 +177,7 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra if(this.unit != Nulls.unit){ //un-control the old unit - this.unit.controller(this.unit.type().createController()); + this.unit.controller(this.unit.type.createController()); } this.unit = unit; if(unit != Nulls.unit){ diff --git a/core/src/mindustry/entities/comp/PuddleComp.java b/core/src/mindustry/entities/comp/PuddleComp.java index 669ee7e1f2..d83408c734 100644 --- a/core/src/mindustry/entities/comp/PuddleComp.java +++ b/core/src/mindustry/entities/comp/PuddleComp.java @@ -74,7 +74,7 @@ abstract class PuddleComp implements Posc, Puddlec, Drawc{ unit.apply(liquid.effect, 60 * 2); if(unit.vel.len() > 0.1){ - Fx.ripple.at(unit.x, unit.y, unit.type().rippleScale, liquid.color); + Fx.ripple.at(unit.x, unit.y, unit.type.rippleScale, liquid.color); } } } diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 72a8d115f0..897305e87a 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -36,7 +36,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I @Import int id; private UnitController controller; - private UnitType type; + UnitType type; boolean spawnedByCore; double flag; @@ -110,7 +110,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I case firstItem -> stack().amount == 0 ? null : item(); case payloadType -> self() instanceof Payloadc pay ? (pay.payloads().isEmpty() ? null : - pay.payloads().peek() instanceof UnitPayload p1 ? p1.unit.type() : + pay.payloads().peek() instanceof UnitPayload p1 ? p1.unit.type : pay.payloads().peek() instanceof BuildPayload p2 ? p2.block() : null) : null; default -> noSensed; }; @@ -163,22 +163,12 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I @Override public void set(UnitType def, UnitController controller){ - type(type); + if(this.type != def){ + setType(def); + } controller(controller); } - @Override - public void type(UnitType type){ - if(this.type == type) return; - - setStats(type); - } - - @Override - public UnitType type(){ - return type; - } - /** @return pathfinder path type for calculating costs */ public int pathType(){ return Pathfinder.costGround; @@ -208,7 +198,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I return Units.getCap(team); } - public void setStats(UnitType type){ + public void setType(UnitType type){ this.type = type; this.maxHealth = type.health; this.drag = type.drag; @@ -226,7 +216,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I @Override public void afterSync(){ //set up type info after reading - setStats(this.type); + setType(this.type); controller.unit(self()); } diff --git a/core/src/mindustry/entities/units/AIController.java b/core/src/mindustry/entities/units/AIController.java index b02fa5dc00..ca005fe25d 100644 --- a/core/src/mindustry/entities/units/AIController.java +++ b/core/src/mindustry/entities/units/AIController.java @@ -95,7 +95,7 @@ public class AIController implements UnitController{ if(tile == targetTile || (costType == Pathfinder.costWater && !targetTile.floor().isLiquid)) return; - unit.moveAt(vec.trns(unit.angleTo(targetTile), unit.type().speed)); + unit.moveAt(vec.trns(unit.angleTo(targetTile), unit.type.speed)); } protected void updateWeapons(){ @@ -105,7 +105,7 @@ public class AIController implements UnitController{ boolean ret = retarget(); if(ret){ - target = findTarget(unit.x, unit.y, unit.range(), unit.type().targetAir, unit.type().targetGround); + target = findTarget(unit.x, unit.y, unit.range(), unit.type.targetAir, unit.type.targetGround); } if(invalid(target)){ @@ -119,7 +119,7 @@ public class AIController implements UnitController{ float mountX = unit.x + Angles.trnsx(rotation, weapon.x, weapon.y), mountY = unit.y + Angles.trnsy(rotation, weapon.x, weapon.y); - if(unit.type().singleTarget){ + if(unit.type.singleTarget){ targets[i] = target; }else{ if(ret){ @@ -176,7 +176,7 @@ public class AIController implements UnitController{ } protected void circle(Position target, float circleLength){ - circle(target, circleLength, unit.type().speed); + circle(target, circleLength, unit.type.speed); } protected void circle(Position target, float circleLength, float speed){ diff --git a/core/src/mindustry/game/SpawnGroup.java b/core/src/mindustry/game/SpawnGroup.java index 92ba6811ea..86ba7b6324 100644 --- a/core/src/mindustry/game/SpawnGroup.java +++ b/core/src/mindustry/game/SpawnGroup.java @@ -9,6 +9,8 @@ import mindustry.gen.*; import mindustry.io.legacy.*; import mindustry.type.*; +import java.util.*; + import static mindustry.Vars.*; /** @@ -138,4 +140,20 @@ public class SpawnGroup implements Serializable{ ", items=" + items + '}'; } + + @Override + public boolean equals(Object o){ + if(this == o) return true; + if(o == null || getClass() != o.getClass()) return false; + SpawnGroup group = (SpawnGroup)o; + return end == group.end && begin == group.begin && spacing == group.spacing && max == group.max + && Float.compare(group.unitScaling, unitScaling) == 0 && Float.compare(group.shields, shields) == 0 + && Float.compare(group.shieldScaling, shieldScaling) == 0 && unitAmount == group.unitAmount && + type == group.type && effect == group.effect && Structs.eq(items, group.items); + } + + @Override + public int hashCode(){ + return Arrays.hashCode(new Object[]{type, end, begin, spacing, max, unitScaling, shields, shieldScaling, unitAmount, effect, items}); + } } diff --git a/core/src/mindustry/game/Teams.java b/core/src/mindustry/game/Teams.java index aa390c5d26..6a2972f074 100644 --- a/core/src/mindustry/game/Teams.java +++ b/core/src/mindustry/game/Teams.java @@ -131,7 +131,7 @@ public class Teams{ } private void count(Unit unit){ - unit.team.data().updateCount(unit.type(), 1); + unit.team.data().updateCount(unit.type, 1); if(unit instanceof Payloadc){ ((Payloadc)unit).payloads().each(p -> { @@ -178,15 +178,15 @@ public class Teams{ data.units.add(unit); data.presentFlag = true; - if(data.unitsByType == null || data.unitsByType.length <= unit.type().id){ + if(data.unitsByType == null || data.unitsByType.length <= unit.type.id){ data.unitsByType = new Seq[content.units().size]; } - if(data.unitsByType[unit.type().id] == null){ - data.unitsByType[unit.type().id] = new Seq<>(); + if(data.unitsByType[unit.type.id] == null){ + data.unitsByType[unit.type.id] = new Seq<>(); } - data.unitsByType[unit.type().id].add(unit); + data.unitsByType[unit.type.id].add(unit); count(unit); } diff --git a/core/src/mindustry/graphics/MinimapRenderer.java b/core/src/mindustry/graphics/MinimapRenderer.java index cdb84e9044..1c34b4424e 100644 --- a/core/src/mindustry/graphics/MinimapRenderer.java +++ b/core/src/mindustry/graphics/MinimapRenderer.java @@ -96,7 +96,7 @@ public class MinimapRenderer implements Disposable{ Draw.mixcol(unit.team().color, 1f); float scale = Scl.scl(1f) / 2f * scaling * 32f; - Draw.rect(unit.type().icon(Cicon.full), x + rx, y + ry, scale, scale, unit.rotation() - 90); + Draw.rect(unit.type.icon(Cicon.full), x + rx, y + ry, scale, scale, unit.rotation() - 90); Draw.reset(); //only disable player names in multiplayer diff --git a/core/src/mindustry/graphics/OverlayRenderer.java b/core/src/mindustry/graphics/OverlayRenderer.java index c7c0c697c3..524ee79ea6 100644 --- a/core/src/mindustry/graphics/OverlayRenderer.java +++ b/core/src/mindustry/graphics/OverlayRenderer.java @@ -85,7 +85,7 @@ public class OverlayRenderer{ //special selection for block "units" Fill.square(select.x, select.y, ((BlockUnitc)select).tile().block.size * tilesize/2f); }else{ - Draw.rect(select.type().icon(Cicon.full), select.x(), select.y(), select.rotation() - 90); + Draw.rect(select.type.icon(Cicon.full), select.x(), select.y(), select.rotation() - 90); } Lines.stroke(unitFade); diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index 7099f254dd..e66f119f8f 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -599,11 +599,11 @@ public class DesktopInput extends InputHandler{ } protected void updateMovement(Unit unit){ - boolean omni = unit.type().omniMovement; + boolean omni = unit.type.omniMovement; boolean ground = unit.isGrounded(); - float strafePenalty = ground ? 1f : Mathf.lerp(1f, unit.type().strafePenalty, Angles.angleDist(unit.vel().angle(), unit.rotation()) / 180f); - float baseSpeed = unit.type().speed; + float strafePenalty = ground ? 1f : Mathf.lerp(1f, unit.type.strafePenalty, Angles.angleDist(unit.vel().angle(), unit.rotation()) / 180f); + float baseSpeed = unit.type.speed; //limit speed to minimum formation speed to preserve formation if(unit.isCommanding()){ @@ -611,7 +611,7 @@ public class DesktopInput extends InputHandler{ baseSpeed = unit.minFormationSpeed * 0.95f; } - float speed = baseSpeed * Mathf.lerp(1f, unit.isCommanding() ? 1f : unit.type().canBoost ? unit.type().boostMultiplier : 1f, unit.elevation) * strafePenalty; + float speed = baseSpeed * Mathf.lerp(1f, unit.isCommanding() ? 1f : unit.type.canBoost ? unit.type.boostMultiplier : 1f, unit.elevation) * strafePenalty; float xa = Core.input.axis(Binding.move_x); float ya = Core.input.axis(Binding.move_y); boolean boosted = (unit instanceof Mechc && unit.isFlying()); @@ -622,7 +622,7 @@ public class DesktopInput extends InputHandler{ } float mouseAngle = Angles.mouseAngle(unit.x, unit.y); - boolean aimCursor = omni && player.shooting && unit.type().hasWeapons() && unit.type().faceTarget && !boosted && unit.type().rotateShooting; + boolean aimCursor = omni && player.shooting && unit.type.hasWeapons() && unit.type.faceTarget && !boosted && unit.type.rotateShooting; if(aimCursor){ unit.lookAt(mouseAngle); @@ -637,11 +637,11 @@ public class DesktopInput extends InputHandler{ }else{ unit.moveAt(Tmp.v2.trns(unit.rotation, movement.len())); if(!movement.isZero() && ground){ - unit.vel.rotateTo(movement.angle(), unit.type().rotateSpeed); + unit.vel.rotateTo(movement.angle(), unit.type.rotateSpeed); } } - unit.aim(unit.type().faceTarget ? Core.input.mouseWorld() : Tmp.v1.trns(unit.rotation, Core.input.mouseWorld().dst(unit)).add(unit.x, unit.y)); + unit.aim(unit.type.faceTarget ? Core.input.mouseWorld() : Tmp.v1.trns(unit.rotation, Core.input.mouseWorld().dst(unit)).add(unit.x, unit.y)); unit.controlWeapons(true, player.shooting && !boosted); player.boosting = Core.input.keyDown(Binding.boost) && !movement.isZero(); diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index eebe40e15b..4a5c26eb9d 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -158,7 +158,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ Payloadc pay = (Payloadc)unit; if(target.isAI() && target.isGrounded() && pay.canPickup(target) - && target.within(unit, unit.type().hitSize * 2f + target.type().hitSize * 2f)){ + && target.within(unit, unit.type.hitSize * 2f + target.type.hitSize * 2f)){ Call.pickedUnitPayload(unit, target); } } @@ -365,7 +365,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ if(commander.isCommanding()){ commander.clearCommand(); - }else if(player.unit().type().commandLimit > 0){ + }else if(player.unit().type.commandLimit > 0){ //TODO try out some other formations commander.commandNearby(new CircleFormation()); @@ -398,17 +398,17 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } if(player.shooting && !wasShooting && player.unit().hasWeapons() && state.rules.unitAmmo && player.unit().ammo <= 0){ - player.unit().type().weapons.first().noAmmoSound.at(player.unit()); + player.unit().type.weapons.first().noAmmoSound.at(player.unit()); } wasShooting = player.shooting; if(!player.dead()){ - controlledType = player.unit().type(); + controlledType = player.unit().type; } if(controlledType != null && player.dead()){ - Unit unit = Units.closest(player.team(), player.x, player.y, u -> !u.isPlayer() && u.type() == controlledType && !u.dead); + Unit unit = Units.closest(player.team(), player.x, player.y, u -> !u.isPlayer() && u.type == controlledType && !u.dead); if(unit != null){ Call.unitControl(player, unit); @@ -418,7 +418,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ public void checkUnit(){ if(controlledType != null){ - Unit unit = Units.closest(player.team(), player.x, player.y, u -> !u.isPlayer() && u.type() == controlledType && !u.dead); + Unit unit = Units.closest(player.team(), player.x, player.y, u -> !u.isPlayer() && u.type == controlledType && !u.dead); if(unit == null && controlledType == UnitTypes.block){ unit = world.buildWorld(player.x, player.y) instanceof ControlBlock ? ((ControlBlock)world.buildWorld(player.x, player.y)).unit() : null; } @@ -437,7 +437,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ Unit unit = player.unit(); if(!(unit instanceof Payloadc pay)) return; - Unit target = Units.closest(player.team(), pay.x(), pay.y(), unit.type().hitSize * 2.5f, u -> u.isAI() && u.isGrounded() && pay.canPickup(u) && u.within(unit, u.hitSize + unit.hitSize * 1.2f)); + Unit target = Units.closest(player.team(), pay.x(), pay.y(), unit.type.hitSize * 2.5f, u -> u.isAI() && u.isGrounded() && pay.canPickup(u) && u.within(unit, u.hitSize + unit.hitSize * 1.2f)); if(target != null){ Call.requestUnitPayload(player, target); }else{ diff --git a/core/src/mindustry/input/MobileInput.java b/core/src/mindustry/input/MobileInput.java index 19f458ea88..d5d45192b0 100644 --- a/core/src/mindustry/input/MobileInput.java +++ b/core/src/mindustry/input/MobileInput.java @@ -85,7 +85,7 @@ public class MobileInput extends InputHandler implements GestureListener{ if(tile != null && player.team().isEnemy(tile.team)){ player.miner().mineTile(null); target = tile; - }else if(tile != null && player.unit().type().canHeal && tile.team == player.team() && tile.damaged()){ + }else if(tile != null && player.unit().type.canHeal && tile.team == player.team() && tile.damaged()){ player.miner().mineTile(null); target = tile; } @@ -834,10 +834,10 @@ public class MobileInput extends InputHandler implements GestureListener{ protected void updateMovement(Unit unit){ Rect rect = Tmp.r3; - UnitType type = unit.type(); + UnitType type = unit.type; if(type == null) return; - boolean omni = unit.type().omniMovement; + boolean omni = unit.type.omniMovement; boolean legs = unit.isGrounded(); boolean allowHealing = type.canHeal; boolean validHealTarget = allowHealing && target instanceof Building && ((Building)target).isValid() && target.team() == unit.team && @@ -855,7 +855,7 @@ public class MobileInput extends InputHandler implements GestureListener{ float attractDst = 15f; float strafePenalty = legs ? 1f : Mathf.lerp(1f, type.strafePenalty, Angles.angleDist(unit.vel.angle(), unit.rotation) / 180f); - float baseSpeed = unit.type().speed; + float baseSpeed = unit.type.speed; //limit speed to minimum formation speed to preserve formation if(unit.isCommanding()){ diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index d493a7f7fe..124f3e0d50 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -395,7 +395,7 @@ public class LExecutor{ if(unit instanceof Payloadc pay){ //units if(exec.bool(p1)){ - Unit result = Units.closest(unit.team, unit.x, unit.y, unit.type().hitSize * 2f, u -> u.isAI() && u.isGrounded() && pay.canPickup(u) && u.within(unit, u.hitSize + unit.hitSize * 1.2f)); + Unit result = Units.closest(unit.team, unit.x, unit.y, unit.type.hitSize * 2f, u -> u.isAI() && u.isGrounded() && pay.canPickup(u) && u.within(unit, u.hitSize + unit.hitSize * 1.2f)); if(result != null){ Call.pickedUnitPayload(unit, result); diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 325881760b..02e2c20016 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -257,12 +257,12 @@ public class SectorDamage{ float healthMult = 1f + Mathf.clamp(unit.armor / 20f); sumHealth += unit.health*healthMult + unit.shield; - sumDps += unit.type().dpsEstimate; + sumDps += unit.type.dpsEstimate; if(unit.abilities.find(a -> a instanceof HealFieldAbility) instanceof HealFieldAbility h){ sumRps += h.amount / h.reload * 60f; } }else{ - curEnemyDps += unit.type().dpsEstimate; + curEnemyDps += unit.type.dpsEstimate; curEnemyHealth += unit.health; } } diff --git a/core/src/mindustry/mod/ContentParser.java b/core/src/mindustry/mod/ContentParser.java index b9c119ee32..2d5310d325 100644 --- a/core/src/mindustry/mod/ContentParser.java +++ b/core/src/mindustry/mod/ContentParser.java @@ -260,8 +260,8 @@ public class ContentParser{ //TODO test this! read(() -> { //add reconstructor type - if(value.hasChild("requirements")){ - JsonValue rec = value.remove("requirements"); + if(value.has("requirements")){ + JsonValue rec = value.remove("requirements"); //intermediate class for parsing class UnitReq{ @@ -286,6 +286,16 @@ public class ContentParser{ } + //read extra default waves + if(value.has("waves")){ + SpawnGroup[] groups = parser.readValue(SpawnGroup[].class, value.get("waves")); + for(SpawnGroup group : groups){ + group.type = unit; + } + + Vars.defaultWaves.get().addAll(groups); + } + readFields(unit, value, true); }); diff --git a/core/src/mindustry/type/AmmoTypes.java b/core/src/mindustry/type/AmmoTypes.java index 5b7c885519..534bdbe703 100644 --- a/core/src/mindustry/type/AmmoTypes.java +++ b/core/src/mindustry/type/AmmoTypes.java @@ -48,8 +48,8 @@ public class AmmoTypes implements ContentList{ if(build.block.consumes.hasPower() && build.block.consumes.getPower().buffered){ float amount = closest.build.power.status * build.block.consumes.getPower().capacity; - float powerPerAmmo = totalPower / unit.type().ammoCapacity; - float ammoRequired = unit.type().ammoCapacity - unit.ammo; + float powerPerAmmo = totalPower / unit.type.ammoCapacity; + float ammoRequired = unit.type.ammoCapacity - unit.ammo; float powerRequired = ammoRequired * powerPerAmmo; float powerTaken = Math.min(amount, powerRequired); diff --git a/core/src/mindustry/type/ItemStack.java b/core/src/mindustry/type/ItemStack.java index d5f4097b58..e2e0d2d5f4 100644 --- a/core/src/mindustry/type/ItemStack.java +++ b/core/src/mindustry/type/ItemStack.java @@ -64,6 +64,13 @@ public class ItemStack implements Comparable{ return item.compareTo(itemStack.item); } + @Override + public boolean equals(Object o){ + if(this == o) return true; + if(!(o instanceof ItemStack stack)) return false; + return amount == stack.amount && item == stack.item; + } + @Override public String toString(){ return "ItemStack{" + diff --git a/core/src/mindustry/type/StatusEffect.java b/core/src/mindustry/type/StatusEffect.java index eb0bedb60c..90488c62ea 100644 --- a/core/src/mindustry/type/StatusEffect.java +++ b/core/src/mindustry/type/StatusEffect.java @@ -56,7 +56,7 @@ public class StatusEffect extends MappableContent{ } if(effect != Fx.none && Mathf.chanceDelta(effectChance)){ - Tmp.v1.rnd(unit.type().hitSize /2f); + Tmp.v1.rnd(unit.type.hitSize /2f); effect.at(unit.x + Tmp.v1.x, unit.y + Tmp.v1.y); } } diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 68fdd6837e..7d0c3fd98b 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -117,7 +117,7 @@ public class UnitType extends UnlockableContent{ public Unit create(Team team){ Unit unit = constructor.get(); unit.team = team; - unit.type(this); + unit.setType(this); unit.ammo = ammoCapacity; //fill up on ammo upon creation unit.elevation = flying ? 1f : 0; unit.heal(); diff --git a/core/src/mindustry/ui/fragments/HudFragment.java b/core/src/mindustry/ui/fragments/HudFragment.java index 327e65cd13..d51c83881d 100644 --- a/core/src/mindustry/ui/fragments/HudFragment.java +++ b/core/src/mindustry/ui/fragments/HudFragment.java @@ -712,7 +712,7 @@ public class HudFragment extends Fragment{ t.add(new SideBar(() -> player.unit().healthf(), () -> true, true)).width(bw).growY().padRight(pad); t.image(() -> player.icon()).scaling(Scaling.bounded).grow().maxWidth(54f); t.add(new SideBar(() -> player.dead() ? 0f : player.displayAmmo() ? player.unit().ammof() : player.unit().healthf(), () -> !player.displayAmmo(), false)).width(bw).growY().padLeft(pad).update(b -> { - b.color.set(player.displayAmmo() ? player.dead() || player.unit() instanceof BlockUnitc ? Pal.ammo : player.unit().type().ammoType.color : Pal.health); + b.color.set(player.displayAmmo() ? player.dead() || player.unit() instanceof BlockUnitc ? Pal.ammo : player.unit().type.ammoType.color : Pal.health); }); t.getChildren().get(1).toFront(); diff --git a/core/src/mindustry/world/blocks/defense/TractorBeamTurret.java b/core/src/mindustry/world/blocks/defense/TractorBeamTurret.java index 1f74360ed5..3808f7c360 100644 --- a/core/src/mindustry/world/blocks/defense/TractorBeamTurret.java +++ b/core/src/mindustry/world/blocks/defense/TractorBeamTurret.java @@ -75,7 +75,7 @@ public class TractorBeamTurret extends Block{ } //look at target - if(target != null && target.within(this, range) && target.team() != team && target.type().flying && efficiency() > 0.01f){ + if(target != null && target.within(this, range) && target.team() != team && target.type.flying && efficiency() > 0.01f){ any = true; float dest = angleTo(target); rotation = Angles.moveToward(rotation, dest, rotateSpeed * edelta()); diff --git a/core/src/mindustry/world/blocks/payloads/UnitPayload.java b/core/src/mindustry/world/blocks/payloads/UnitPayload.java index 724df792fa..2292244864 100644 --- a/core/src/mindustry/world/blocks/payloads/UnitPayload.java +++ b/core/src/mindustry/world/blocks/payloads/UnitPayload.java @@ -43,7 +43,7 @@ public class UnitPayload implements Payload{ @Override public boolean dump(){ - if(!Units.canCreate(unit.team, unit.type())){ + if(!Units.canCreate(unit.team, unit.type)){ deactiveTime = 1f; return false; } @@ -74,7 +74,7 @@ public class UnitPayload implements Payload{ @Override public void draw(){ Drawf.shadow(unit.x, unit.y, 20); - Draw.rect(unit.type().icon(Cicon.full), unit.x, unit.y, unit.rotation - 90); + Draw.rect(unit.type.icon(Cicon.full), unit.x, unit.y, unit.rotation - 90); //draw warning if(deactiveTime > 0){ diff --git a/core/src/mindustry/world/blocks/units/Reconstructor.java b/core/src/mindustry/world/blocks/units/Reconstructor.java index 5b5696bf4c..326a9f06eb 100644 --- a/core/src/mindustry/world/blocks/units/Reconstructor.java +++ b/core/src/mindustry/world/blocks/units/Reconstructor.java @@ -90,7 +90,7 @@ public class Reconstructor extends UnitBlock{ return this.payload == null && relativeTo(source) != rotation && payload instanceof UnitPayload - && hasUpgrade(((UnitPayload)payload).unit.type()); + && hasUpgrade(((UnitPayload)payload).unit.type); } @Override @@ -114,9 +114,9 @@ public class Reconstructor extends UnitBlock{ if(constructing() && hasArrived()){ Draw.draw(Layer.blockOver, () -> { Draw.alpha(1f - progress/ constructTime); - Draw.rect(payload.unit.type().icon(Cicon.full), x, y, rotdeg() - 90); + Draw.rect(payload.unit.type.icon(Cicon.full), x, y, rotdeg() - 90); Draw.reset(); - Drawf.construct(this, upgrade(payload.unit.type()), rotdeg() - 90f, progress / constructTime, speedScl, time); + Drawf.construct(this, upgrade(payload.unit.type), rotdeg() - 90f, progress / constructTime, speedScl, time); }); }else{ Draw.z(Layer.blockOver); @@ -135,7 +135,7 @@ public class Reconstructor extends UnitBlock{ if(payload != null){ //check if offloading - if(!hasUpgrade(payload.unit.type())){ + if(!hasUpgrade(payload.unit.type)){ moveOutPayload(); }else{ //update progress if(moveInPayload()){ @@ -146,7 +146,7 @@ public class Reconstructor extends UnitBlock{ //upgrade the unit if(progress >= constructTime){ - payload.unit = upgrade(payload.unit.type()).create(payload.unit.team()); + payload.unit = upgrade(payload.unit.type).create(payload.unit.team()); progress = 0; Effect.shake(2f, 3f, this); Fx.producesmoke.at(this); @@ -168,12 +168,12 @@ public class Reconstructor extends UnitBlock{ public UnitType unit(){ if(payload == null) return null; - UnitType t = upgrade(payload.unit.type()); + UnitType t = upgrade(payload.unit.type); return t != null && t.unlockedNow() ? t : null; } public boolean constructing(){ - return payload != null && hasUpgrade(payload.unit.type()); + return payload != null && hasUpgrade(payload.unit.type); } public boolean hasUpgrade(UnitType type){ diff --git a/core/src/mindustry/world/blocks/units/ResupplyPoint.java b/core/src/mindustry/world/blocks/units/ResupplyPoint.java index 2714be2358..6402b20147 100644 --- a/core/src/mindustry/world/blocks/units/ResupplyPoint.java +++ b/core/src/mindustry/world/blocks/units/ResupplyPoint.java @@ -65,10 +65,10 @@ public class ResupplyPoint extends Block{ public static boolean resupply(Team team, float x, float y, float range, float ammoAmount, Color ammoColor, Boolf valid){ if(!state.rules.unitAmmo) return false; - Unit unit = Units.closest(team, x, y, range, u -> u.type().ammoType instanceof ItemAmmoType && u.ammo <= u.type().ammoCapacity - ammoAmount && valid.get(u)); + Unit unit = Units.closest(team, x, y, range, u -> u.type.ammoType instanceof ItemAmmoType && u.ammo <= u.type.ammoCapacity - ammoAmount && valid.get(u)); if(unit != null){ Fx.itemTransfer.at(x, y, ammoAmount / 2f, ammoColor, unit); - unit.ammo = Math.min(unit.ammo + ammoAmount, unit.type().ammoCapacity); + unit.ammo = Math.min(unit.ammo + ammoAmount, unit.type.ammoCapacity); return true; } diff --git a/desktop/src/mindustry/desktop/steam/SStats.java b/desktop/src/mindustry/desktop/steam/SStats.java index 7e7c9ecef3..925c670223 100644 --- a/desktop/src/mindustry/desktop/steam/SStats.java +++ b/desktop/src/mindustry/desktop/steam/SStats.java @@ -60,7 +60,7 @@ public class SStats implements SteamUserStatsCallback{ // active10Phantoms.complete(); //} - if(Groups.unit.count(u -> u.type() == UnitTypes.crawler && u.team() == player.team()) >= 50){ + if(Groups.unit.count(u -> u.type == UnitTypes.crawler && u.team() == player.team()) >= 50){ active50Crawlers.complete(); } From ef2bf2e12906b7e61005dc2d9e59f27d9c819c54 Mon Sep 17 00:00:00 2001 From: DeltaNedas Date: Sat, 17 Oct 2020 15:38:12 +0100 Subject: [PATCH 33/55] add universeDraw event --- core/src/mindustry/game/EventType.java | 5 ++++- core/src/mindustry/graphics/g3d/PlanetRenderer.java | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index b786bb47f7..cc71e17224 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -36,8 +36,11 @@ public class EventType{ postDraw, uiDrawBegin, uiDrawEnd, - //before/after bloom used, skybox or planets drawn - use Vars.renderer.planets + //before/after bloom used, skybox or planets drawn universeDrawBegin, + //skybox drawn and bloom is enabled - use Vars.renderer.planets + universeDraw, + //planets drawn and bloom disabled universeDrawEnd } diff --git a/core/src/mindustry/graphics/g3d/PlanetRenderer.java b/core/src/mindustry/graphics/g3d/PlanetRenderer.java index 14a4cc8820..6398839677 100644 --- a/core/src/mindustry/graphics/g3d/PlanetRenderer.java +++ b/core/src/mindustry/graphics/g3d/PlanetRenderer.java @@ -89,6 +89,8 @@ public class PlanetRenderer implements Disposable{ skybox.render(cam.combined); + Events.fire(Trigger.universeDraw); + renderPlanet(solarSystem); endBloom(); From c99873c8236d787de25338e53b68b541704346f3 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 17 Oct 2020 11:02:48 -0400 Subject: [PATCH 34/55] Added bool to enable editor cliff button --- .../sprites/blocks/environment/cliff.png | Bin 258 -> 274 bytes core/assets/sprites/block_colors.png | Bin 825 -> 827 bytes core/assets/sprites/fallback/sprites5.png | Bin 186601 -> 190052 bytes core/assets/sprites/fallback/sprites6.png | Bin 381400 -> 381360 bytes core/assets/sprites/fallback/sprites7.png | Bin 438916 -> 439082 bytes core/assets/sprites/fallback/sprites8.png | Bin 1446263 -> 1447636 bytes core/assets/sprites/sprites2.png | Bin 187893 -> 191167 bytes core/assets/sprites/sprites3.png | Bin 362945 -> 362837 bytes core/assets/sprites/sprites4.png | Bin 436017 -> 436118 bytes core/assets/sprites/sprites5.png | Bin 1495323 -> 1497416 bytes core/src/mindustry/Vars.java | 2 + core/src/mindustry/editor/MapEditor.java | 47 ++++++++++++++++++ .../src/mindustry/editor/MapEditorDialog.java | 10 +++- core/src/mindustry/mod/ContentParser.java | 3 +- 14 files changed, 60 insertions(+), 2 deletions(-) diff --git a/core/assets-raw/sprites/blocks/environment/cliff.png b/core/assets-raw/sprites/blocks/environment/cliff.png index 9d76c62084dde6fe50471e08ff9657408b4b7708..0ea51ef09b8fabdac4d0e506141471e6dc65dd67 100644 GIT binary patch delta 233 zcmZo-n#450u>Opvi(^Pc>)Gj%d<_abE=Pagm$bi=+<4B1arTTIhVNHSOpV-f>bP6D z(8D4z?SQH*i+;f!4=msB*4&%4z$fGZ^Zq6ePL~B7;VOHWd@Zye3Kkre?40HxTGy0y zJ!;OZ25!DP$(y{G1Y#y`m?ZF{^1v2D))xxf-hN)gwA}bf_zJJ2B?%Tf8?BgkU)8r` zylTLd$Ljl+cj|%-eH{~bNVAq6o#OH(fyMKSR9~!6TE>GGmT4~xRg1m9%$Z`Q>gIF0 qTS!@4O`g*<|JS1s-O9>+j9n#*q(%OHoW{Vwz~JfX=d#Wzp$PzM;$sy6 delta 217 zcmbQl)WkHwuzruHi(^Pc>(yxo`3@`aI6uz(|Nr!xmMLy8xo#*Q-X5k~r>Lguv*KD* zbrlVEKI7i^0R|)qGM;As7w~s~*hwi+Y!t*02>+gq~mzvJFa0cFM zDr)$D{s4!_;_oXuA6=gP(u{edQ|Qq+h7B@KSNj5%H#EL@Ul*HT!o2zI$L!qys@<(M a3|doi1VbM_*vP=Zz~JfX=d#Wzp$Py9bz%+x diff --git a/core/assets/sprites/block_colors.png b/core/assets/sprites/block_colors.png index 3e19c96e6186b90b07a2038235d4b03b0126f6c7..e8845aa0722d468a56a91b9ad216f89726cd3985 100644 GIT binary patch delta 804 zcmdnVwwrB&N;P^t{zC|J>=fw2XBX z%WT_*gY{yy`SNcM>OH-5U1WOs%xz}`c1(F-@cuJ%%f{`qoi-l)-v6*)+`!0&$Nui) z2l^fSNB@76P-!-J*YoL(<)f36>zNm>?l}0*(8oOGOq%NlAK|V=ofEgOH@H;U`;g!6 z>7<9sdi&~Uo(^A^^yh=j@?Go|>v#8;@Ba1T?d}5yW`3SyU(C1L_{@b16AVhE{%zi0 zvCBha+EIC*2mGoL=bqeH6JD`IZ_zUG3De3ic&Tpb6*^nebhf8ume=Iz(m$9aSDh7F zSl?OrZL^--(>WH0_HX|oz5mb5NA2;8TjrQLt&{q*hu435#m~iar~AJ>A=-PVNY?dY z>!NKDe z*|n}7|A?KImS?YQ;h(MCaq&sQsT}8NTru-EBy6h)tXJ_oq8j@`cPbax#5a10^{pw} zT(SbwAHS;&(=L5hT>WB}N{O%F{mjg+qIv7LrG8u0eMkR%vHpIK$K9fG_f9_ED$aSN z>rBO@9d9F7t>h^>;jXoM!s#m!@e?|hz89DupPHH5`FGc$?OU1pUkjamW!1a3RLfi2 z<&IujZJ^RZm6f;a9mSF?FMVPbn#t?++WJTSJqNE-Ia5MoiX&w7D4idDC6%~T0FslKR8*zorAD`7z< zr`O(Jb!&h0%C)C5QYHJXTdxW^cD;7W`dYq1Zg)$$RsTto(>G>JogsU_|MJX(Hcy}B ZTgNN?3Y~O5j)8%J!PC{xWt~$(69AC+oVox2 delta 802 zcmdnZwv%mwNRESI|K-!^OQwGn_m!$!$@T5})lMF@Y5}$6SBrNa zSdimiC-!~AcH6fH9?oh1TyicmJKOPXO)$fwssHUQ3U7JuS3Ky@Uf=oso?ObSuI9(G z&nul}o;?(Q{~_x3>n~rv6n{#wkBzn6B5&=M?`|E=-oIIL-jcsB0?%#Te{|yE_6;|g zCH^eG`2E|(ckhDqY!~d!Z784}QuQqK8XTV=CqP`8!z z_IDeiRvOR0?R;HjVRqM#IPc&opKEsOZVr!q;#WEE_D@%-`1J+v)8y9g^-u^)IX3x7 z?)f0!)CtaZL6NO7%Z~kOa?z=s{Ns<7ceeMN>!SNsi&lh8&j`DonX@)HGD`7Lnc?eh zAx>4#yBwPY>Q7Ic_I}cdoPenN2kZYz1qG!oUh`$iP>guc>iyxbHhNbq|2)HIb5Cz%=g+?u(sL!x1n2!@JEWyj V_3BB65Ca1PgQu&X%Q~loCIIHEakt5%=b9_r)a} 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%0A>1DA1?W`9! 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

;ub8cAxA&ioc6FTM_k)k`3Ht9? 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­}$mEy0T_F*VpF)=>^hDS1jC=p87og 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%0D|_Uf@-Iz@&c}Z{`y5MM^T~ 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ℜ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 |z1EkjSzP(v+ul&**@egr)*&l4fvd?_^ z<`&*55s)Uht9?n?d{eID-;Z3VegEKG#S_MPH~6omhpm2}FzfI2*$1B=V$UmpB%8+p zap{R=x^F-3xh;OL@utXC*$KRH_H%C~7q(4%a>RetHQ`jKQ4pkS#_%*MS-un9W-kT0_o;4O%=2Yk>GrtdC`D?=u-5cxB z)^8)+pE=vag-2umHJg(Whv#!XyBw@8*RT98#sidukIqjvIBM}h^~25wGoxj+m_bc1 ziz(M5XT*BnF2DBCyC?A}+orl(Z|869`T6V8P2u*OqmfIB)GG5!T{LADOmY|E|FHOh z%9MFo+-=>*5-s$WGhQ!PbmrkirCv#gU0bVkUUiu4TKU1XYdXV`_YGhDtZt>xbu1Uu ze|PW|i%8@ZnbeHnnTNNk>|?yH-4QR56L?1X$kzhdH{ca=YwoqZo&DmMV9QF~Ups3e z&ZznS*~1x{ez`t0$9L97xkLGDV-49oM9!y`*7em}PSX!NVM+g(9B zybsiG(D$>8IOFIWsBus9Z&B0dxrWDjgl;`<`W;~w_U?vwLhP4$?T4eJLakjmrz~7) zx;^9CXB~t2soDPJa~AK2?aV*;b@tP@J6S(l7&0(4FnGE+hU{wZjc1;>_WFFO_EVrW zoThwFOU2Tz2mRvNR4u2o>g|2K#Q!Ip?o9WbRy0rJ|1JsbVxjyUqO(;Z!|G?ZH?rxmm}PEj*OHH27H_ z>!e1%3CzuQa$)%Yv1Yy1`A()nrR3v*W^Wmv*xsHglKPDCJMWhHzc)-tOX>0cZdtb| zt6gK`r=lls!()TCO*{YS{M=pDtIF1^fArlk&;5((gPS{auUmxhiOmPCzhA%EVE43d z5&QaTljOtdOe+u6=I3ZU_>p9^vd3|uS7v~ZhODbvyP#R+)dL2R*Cv`huKaST;Wx+g z{yCR8BWGFul{(tS{BnhU4Qp=PABl+j-TNn0apg&ioo{}v!Oj2roWnmwr-u3ma~5t3 zjGSsAuUCBG-p;MB-Z`z=jHPUOq^dEcdBG&QcTIEj%8m% zx;_b>Kk!QRy5OU}?WPK6H12MZ?Ah$8*;W%MbLdZc=J(?-@2&gFchqwBEj!Kc?CC*Y zOidMd{=aNBev^AksbecTpD-!L5E`~Rz_Y|$L0o7HH1AZp| z=~xtC^FDmT$LlvNeq|p_|MZ3Bz`R>GHZ(r&KDor`+^oU}(H629-yCl}o1JNDaORVF zqU^ke0IOqaywCqhsdcNLIb7zl!DMq(YFtjs#Izqr#2*wrR1%kGdiC?70`M@Cm>aC~f-`y)&TV-?ol|^ce>y9<33%_GFka^it^y-%KtB9XlOUx#OcYEgu zJ~|s=9r>vC?ZUFukD6ztcK;IT+3s#@@#oWa`%fop`RnFQd⁣dGO;=m!O|bi)4Lz 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%0AG|6%(=|t| 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