mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-07-25 15:18:24 +07:00
Implemented #1129 / Bugfixes
This commit is contained in:
@ -21,7 +21,7 @@ public class SerializeProcess extends BaseProcessor{
|
||||
/** Target class name. */
|
||||
private static final String className = "Serialization";
|
||||
/** Name of the base package to put all the generated classes. */
|
||||
private static final String data = "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";
|
||||
private static final String data = "eJy1WHtzEzkS/xb3t3bqrmpm8c464RFggK28uHMdBC5mSV2tKUrWyLbIvE6jcRK8/ib7YffXkmyPExvM1ZIC29Nq9fPXrdb87Y+Ki0s+lixXRdrURt/EqRw240TlVakN41rEP7YfRiqT9S1SU9xiyrmZrFMguRFmndYYlW2g1FIrnqnP3KiyWK2vDBSllpvoqtxELaSJD7U4k+atLqcqlXob11uEQpqWc5/4lK9JtYSMF+NYy1Em2w7ZpeIOs/Xos6pAFhmva9YrPmFfqWdVM8yUYLWBn4JNS5UypcJodu4l19KEzqK+DwgstzI6LLjSykgddFh4XBb1/rNNjnTY0Y2RR81oJPWLKKw6bBixn16wmRqFFVMFNBdCliMGEQU0ul3RbO2RCfbcKmlxVMkQgn/7wLSsm8z0UrAU8opZavdDAjNIx5t+rOrDItVwDVKt92IPvPZnPCr1Gc9lGHDHEpd1fNSoLA2ipG+0Ksb2SWo29N9Oy9paGCUvlcxSGDOi7xpMYi8eS2PJNdahJ7QPjoM99ZwR2Wh/Evu7m0qGEXv+3Mt3kY5m5IvXH/OqkkW62hMWTZZFUTIX3IhJ+G6iyys+zCRDEOfzuQ8SfdXtCD3+kNgIPPvlBavF9nhUC7j2pTEwqf57X4pGS8RnuV/o7ftFWRhZmPjYfZ/LusymAE1rO+cbtqMOh5ToIo0XonwWD6sKkLV1uWbEF5xYM+LaYNtraSZlysa0iXOK44lEsLVM3UoYgLRifzOkemHCEbBnLGJVTMtLCVSiDyApHgM+v88R1CUAwuDw7OT8Te/kY+9kiSvGVVoQrN1jdCuhSwvr0VJYyzS3CaUndGcdLCvXtMXh7Z13E+Gd055ivdP1wj/v89LsWqUtq2HegpHM7iyldKx/UXILttgdJQTCc+QmnPB6Ei44TOlkhlEUoYFcG2ocdWiRGyWtKreUZC6zWrJFhV+g9ZRXKBXaVAHwaEPcyLGyqJ+Frud4FzJVSFCxUV5LEQZXOXqfqAH1FMcDQ5DYr78iVXENpJkwYAEswtY8jOK6GdbOzMDxZLIYmwmMRjeuMi4Au0GBxATBYk8CIzNUj9R1SKoj9ow9ZL//bu1Y7gfx/v6SaspX5ZXUx7xGQ7D45eiVYSC1LpGzJZ/8X8OzujcugELLHHTvd7vd/W73p+4D+nhIH93uI/o4wP/H+P+kJWAlmrWo29Tj3M1kugMjiiYy1Ipsx+lh15hnh3rc5MDe6bWQFdVvGAw5dVotTaMLRnBAilyQknlnh6yd9Pr/PjnvvT+1WXNn1FmTDwHsr2RvnfcvzOLeg2/O4s7h/rZsURLYX5WFlxi5GM1dyAH9joWWqLB3Mq/oMQwwKowvKWTxdFgH1A4zeWEnBDa68kfPihaSKJyLV7GdIigfhpXDTxeve8jMVAnS809pXHMKB8GVKvJxbuqnA/zFg4EuSzMYCJVP9wdBhGTdY1aGKLOekTmV/Zq4+BSo+U8j9Q37yBw7YwyC+5ImHfYjG+kyZ2gk9/c/HiGURyXXKUR75pelZqdcTEgqKcDsstLlWC5qoVVl4lMxKRdscRtnnk9eK8NwSPnHMzpSBnSYIRoiKymLyRbQC6eCwvzzz2fI+7jEb4oltfnDIZpvY+Rb7rDsUb8V0nZfCv+N9AC/heXH3wTlrdXxvfBd7gpw2KUVhqKtKJ8vAl5gcEDA+zc1JW9s5/VKanMTBg3uBDGtQ8qwLDPJC8aLG3CP0IOlnfFUYZgCpZvg61nrFPJRBfnePTfQtU60FdtvoWL3rBExWXhcpnA5Yv+4K+mDnRWixFmAi41MhqjIyy2DIJL7A1gj1DFLlR3YaHBxFynucRMGxygveDzWPD/hhg8GAczpYQIY2xP6X/LaH9KvAbFRrHGKl3lfyjT8SsRa7nRYt8Oe+D8c9gS8H2ATIK5qg2k5mtFTfolPmp39CMu1vjXA0gzByARPtzNFtCkPe10feOJuDReQGSWkTEwUzWkX/f/2d/E49LaDNYhPDt/BP9vGWlLnc0TajGlY3FHBwcEBVnaPo48cdLQi94V5fxWiu+MVCWl54KnzFkaJA/hKHQP5RwPYbFV9501hVC5bVUeFMt8ER4K/w6G9hd64DkcNrKoIdieLhfA7Qo/it7RghTbY5U+51aJL3iZbvjlbtuXeSdf3xPZXfbgLbIrNXUD/n9CyHn8ZW5ZlDVx3QLMfLebAprE3ENu+an8pjZdXIoQf6+6Yo4DTE+4Hp3mF1KwC7pTv4oXjjBKvdnX5D2lIePSAsovWVQjKsmfGtXTNuqoxS7vo6/Z6zad0ALci4n66S077pGjrTKXVuUMgqAznQzID+Q/f45Cml1r24hUl9NKh98ZlyG8d4l4ZTx0bLW9nIphvX23sdc8qDkWcl0MqrF+YhUC0x56yrl8lswRO9qzUC/6F04jV+TFuRkILH377jHAJeldXpTgWW8x286sSFtAyovGeZw2VnxfrdJMxKeKuPsuNNdVa98W1zUXLRyexihY9kVV+ph2Cgn/+5ZpH3mLwaA14u3Vte1m27Buvx3aq8Vdjr5GcWgxli9t7NEOsaU4GYrwmR9jcXOrlNOjjgG0xT3GRR0Ph+tD77dXToo3ZwoIMibAeL/W71wYztwA9e3v7Dx+j43QfPX6w//DJwavEWV24sYjeaywt2GAf1rxhJOz+Hsb4CQ5Rv3Np4tLCSTKHBKlHmIftm8lqEXs7TblhsmbLxoOU/gkCfcbF";
|
||||
|
||||
@Override
|
||||
public void process(RoundEnvironment env) throws Exception{
|
||||
|
@ -655,6 +655,7 @@ setting.difficulty.name = Difficulty:
|
||||
setting.screenshake.name = Screen Shake
|
||||
setting.effects.name = Display Effects
|
||||
setting.destroyedblocks.name = Display Destroyed Blocks
|
||||
setting.blockstatus.name = Display Block Status
|
||||
setting.conveyorpathfinding.name = Conveyor Placement Pathfinding
|
||||
setting.coreselect.name = Allow Schematic Cores
|
||||
setting.sensitivity.name = Controller Sensitivity
|
||||
@ -702,6 +703,7 @@ keybind.press = Press a key...
|
||||
keybind.press.axis = Press an axis or key...
|
||||
keybind.screenshot.name = Map Screenshot
|
||||
keybind.toggle_power_lines.name = Toggle Power Lasers
|
||||
keybind.toggle_block_status.name = Toggle Block Statuses
|
||||
keybind.move_x.name = Move X
|
||||
keybind.move_y.name = Move Y
|
||||
keybind.mouse_move.name = Follow Mouse
|
||||
|
@ -324,7 +324,6 @@ abstract class TileComp implements Posc, Teamc, Healthc, Tilec, Timerc{
|
||||
}
|
||||
|
||||
public void dumpLiquid(Liquid liquid){
|
||||
Array<Tilec> proximity = proximity();
|
||||
int dump = rotation();
|
||||
|
||||
for(int i = 0; i < proximity.size; i++){
|
||||
@ -336,7 +335,7 @@ abstract class TileComp implements Posc, Teamc, Healthc, Tilec, Timerc{
|
||||
float ofract = other.liquids().get(liquid) / other.block().liquidCapacity;
|
||||
float fract = liquids().get(liquid) / block.liquidCapacity;
|
||||
|
||||
if(ofract < fract) moveLiquid(other, (fract - ofract) * block.liquidCapacity / 2f, liquid);
|
||||
if(ofract < fract) transferLiquid(other, (fract - ofract) * block.liquidCapacity / 2f, liquid);
|
||||
}
|
||||
}
|
||||
|
||||
@ -346,16 +345,14 @@ abstract class TileComp implements Posc, Teamc, Healthc, Tilec, Timerc{
|
||||
return true;
|
||||
}
|
||||
|
||||
//TODO why does this exist?
|
||||
/*
|
||||
public void tryMoveLiquid(Tilec next, float amount, Liquid liquid){
|
||||
public void transferLiquid(Tilec next, float amount, Liquid liquid){
|
||||
float flow = Math.min(next.block().liquidCapacity - next.liquids().get(liquid) - 0.001f, amount);
|
||||
|
||||
if(next.acceptLiquid(liquid, flow)){
|
||||
next.handleLiquid(liquid, flow);
|
||||
if(next.acceptLiquid(this, liquid, flow)){
|
||||
next.handleLiquid(this, liquid, flow);
|
||||
liquids().remove(liquid, flow);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
public float moveLiquid(Tilec next, boolean leak, Liquid liquid){
|
||||
return moveLiquid(next, leak ? 1.5f : 100, liquid);
|
||||
@ -562,6 +559,19 @@ abstract class TileComp implements Posc, Teamc, Healthc, Tilec, Timerc{
|
||||
return shouldConsume();
|
||||
}
|
||||
|
||||
public void drawStatus(){
|
||||
if(block.consumes.any()){
|
||||
float brcx = tile.drawx() + (block.size * tilesize / 2f) - (tilesize / 2f);
|
||||
float brcy = tile.drawy() - (block.size * tilesize / 2f) + (tilesize / 2f);
|
||||
|
||||
Draw.color(Pal.gray);
|
||||
Fill.square(brcx, brcy, 2.5f, 45);
|
||||
Draw.color(cons.status().color);
|
||||
Fill.square(brcx, brcy, 1.5f, 45);
|
||||
Draw.color();
|
||||
}
|
||||
}
|
||||
|
||||
public void drawLayer(){
|
||||
}
|
||||
|
||||
|
@ -33,8 +33,8 @@ public class BlockRenderer implements Disposable{
|
||||
private FrameBuffer shadows = new FrameBuffer(2, 2);
|
||||
private FrameBuffer fog = new FrameBuffer(2, 2);
|
||||
private Array<Tilec> outArray2 = new Array<>();
|
||||
private Array<Tile> outArray = new Array<>();
|
||||
private Array<Tile> shadowEvents = new Array<>();
|
||||
private boolean displayStatus = false;
|
||||
|
||||
public BlockRenderer(){
|
||||
|
||||
@ -177,6 +177,7 @@ public class BlockRenderer implements Disposable{
|
||||
|
||||
/** Process all blocks to draw. */
|
||||
public void processBlocks(){
|
||||
displayStatus = Core.settings.getBool("blockstatus");
|
||||
iterateidx = 0;
|
||||
|
||||
int avgx = (int)(camera.position.x / tilesize);
|
||||
@ -257,6 +258,7 @@ public class BlockRenderer implements Disposable{
|
||||
}
|
||||
|
||||
Block block = request.tile.block();
|
||||
boolean isEnd = (request.layer == Layer.block && block.layer == null) || request.layer == block.layer;
|
||||
|
||||
if(request.layer == Layer.block){
|
||||
block.drawBase(request.tile);
|
||||
@ -274,6 +276,10 @@ public class BlockRenderer implements Disposable{
|
||||
}else if(request.layer == block.layer2){
|
||||
block.drawLayer2(request.tile);
|
||||
}
|
||||
|
||||
if(isEnd && request.tile.entity != null && displayStatus && block.consumes.any()){
|
||||
request.tile.entity.drawStatus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -47,7 +47,8 @@ public enum Binding implements KeyBind{
|
||||
minimap(KeyCode.M),
|
||||
toggle_menus(KeyCode.C),
|
||||
screenshot(KeyCode.P),
|
||||
toggle_power_lines(KeyCode.F7),
|
||||
toggle_power_lines(KeyCode.F5),
|
||||
toggle_block_status(KeyCode.F6),
|
||||
player_list(KeyCode.TAB, "multiplayer"),
|
||||
chat(KeyCode.ENTER),
|
||||
chat_history_prev(KeyCode.UP),
|
||||
|
@ -463,6 +463,10 @@ public class DesktopInput extends InputHandler{
|
||||
mode = none;
|
||||
}
|
||||
|
||||
if(Core.input.keyTap(Binding.toggle_block_status)){
|
||||
Core.settings.putSave("blockstatus", !Core.settings.getBool("blockstatus"));
|
||||
}
|
||||
|
||||
if(Core.input.keyTap(Binding.toggle_power_lines)){
|
||||
if(Core.settings.getInt("lasersopacity") == 0){
|
||||
Core.settings.put("lasersopacity", Core.settings.getInt("preferredlaseropacity", 100));
|
||||
|
@ -214,7 +214,7 @@ public class TODOPlanetGenerator extends PlanetGenerator{
|
||||
|
||||
FloatArray frequencies = new FloatArray();
|
||||
for(int i = 0; i < ores.size; i++){
|
||||
frequencies.add(rand.random(-0.05f, 0.05f));
|
||||
frequencies.add(rand.random(-0.02f, 0.08f));
|
||||
}
|
||||
|
||||
pass((x, y) -> {
|
||||
|
@ -318,6 +318,7 @@ public class SettingsMenuDialog extends SettingsDialog{
|
||||
|
||||
graphics.checkPref("effects", true);
|
||||
graphics.checkPref("destroyedblocks", true);
|
||||
graphics.checkPref("blockstatus", false);
|
||||
graphics.checkPref("playerchat", true);
|
||||
graphics.checkPref("minimap", !mobile);
|
||||
graphics.checkPref("position", false);
|
||||
|
@ -37,7 +37,7 @@ public class LiquidTurret extends Turret{
|
||||
consumes.add(new ConsumeLiquidFilter(i -> ammoTypes.containsKey(i), 1f){
|
||||
@Override
|
||||
public boolean valid(Tilec entity){
|
||||
return !((TurretEntity)entity).ammo.isEmpty();
|
||||
return entity.liquids().total() > 0.001f;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -254,7 +254,6 @@ public abstract class Turret extends Block{
|
||||
|
||||
if(alternate){
|
||||
float i = (shotCounter % shots) - shots/2f + (((shots+1)%2) / 2f);
|
||||
Log.info(i);
|
||||
|
||||
tr.trns(rotation - 90, spread * i + Mathf.range(xRand), size * tilesize / 2);
|
||||
bullet(type, rotation + Mathf.range(inaccuracy));
|
||||
|
@ -16,6 +16,10 @@ public class Consumers{
|
||||
public final Bits itemFilters = new Bits(Vars.content.items().size);
|
||||
public final Bits liquidfilters = new Bits(Vars.content.liquids().size);
|
||||
|
||||
public boolean any(){
|
||||
return results != null && results.length > 0;
|
||||
}
|
||||
|
||||
public void init(){
|
||||
results = Structs.filter(Consume.class, map, m -> m != null);
|
||||
optionalResults = Structs.filter(Consume.class, map, m -> m != null && m.isOptional());
|
||||
|
16
core/src/mindustry/world/meta/BlockStatus.java
Normal file
16
core/src/mindustry/world/meta/BlockStatus.java
Normal file
@ -0,0 +1,16 @@
|
||||
package mindustry.world.meta;
|
||||
|
||||
import arc.graphics.*;
|
||||
import mindustry.graphics.*;
|
||||
|
||||
public enum BlockStatus{
|
||||
active(Color.valueOf("5ce677")),
|
||||
noOutput(Color.orange),
|
||||
noInput(Pal.remove);
|
||||
|
||||
public final Color color;
|
||||
|
||||
BlockStatus(Color color){
|
||||
this.color = color;
|
||||
}
|
||||
}
|
@ -2,7 +2,8 @@ package mindustry.world.modules;
|
||||
|
||||
import arc.util.io.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.world.consumers.Consume;
|
||||
import mindustry.world.consumers.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
public class ConsumeModule extends BlockModule{
|
||||
private boolean valid, optionalValid;
|
||||
@ -12,6 +13,18 @@ public class ConsumeModule extends BlockModule{
|
||||
this.entity = entity;
|
||||
}
|
||||
|
||||
public BlockStatus status(){
|
||||
if(!entity.shouldConsume()){
|
||||
return BlockStatus.noOutput;
|
||||
}
|
||||
|
||||
if(!valid || !entity.productionValid()){
|
||||
return BlockStatus.noInput;
|
||||
}
|
||||
|
||||
return BlockStatus.active;
|
||||
}
|
||||
|
||||
public void update(){
|
||||
//everything is valid here
|
||||
if(entity.tile().isEnemyCheat()){
|
||||
|
@ -1,3 +1,3 @@
|
||||
org.gradle.daemon=true
|
||||
org.gradle.jvmargs=-Xms256m -Xmx1024m
|
||||
archash=c1e97cab1dd143cf49d3c694a6a2e150f742e291
|
||||
archash=0cae533620f20846febba83e19f531c337204d44
|
||||
|
Reference in New Issue
Block a user