From e9994794aa666ee4abfc4af8aa17c88b0758b873 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 19 Mar 2020 11:29:18 -0400 Subject: [PATCH] Sector lock state --- core/assets/planets/TODO.dat | Bin 18360 -> 18317 bytes core/src/mindustry/type/Planet.java | 12 ++-- core/src/mindustry/type/Sector.java | 19 ++++- .../mindustry/ui/dialogs/PlanetDialog.java | 16 +++-- .../world/blocks/logic/LogicExecutor.java | 68 +++++++++++++++--- .../mindustry/world/modules/ItemModule.java | 4 ++ .../mindustry/tools/SectorDataGenerator.java | 17 +++++ 7 files changed, 115 insertions(+), 21 deletions(-) diff --git a/core/assets/planets/TODO.dat b/core/assets/planets/TODO.dat index ecc370bc49bbb1a03a54250e475d598243cdeb9c..db308eedc8517d78a3f4123deb96300315a8850b 100644 GIT binary patch literal 18317 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 literal 18360 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 diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index d12937a278..87732d411b 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -77,11 +77,15 @@ public class Planet extends UnlockableContent{ //read data for sectors Fi data = Vars.tree.get("planets/" + name + ".dat"); if(data.exists()){ - try(Reads read = data.reads()){ - short dsize = read.s(); - for(int i = 0; i < dsize; i++){ - sectors.get(i).data.read(read); + try{ + try(Reads read = data.reads()){ + short dsize = read.s(); + for(int i = 0; i < dsize; i++){ + sectors.get(i).data.read(read); + } } + }catch(Throwable t){ + t.printStackTrace(); } } }else{ diff --git a/core/src/mindustry/type/Sector.java b/core/src/mindustry/type/Sector.java index d8834228df..6affe16f97 100644 --- a/core/src/mindustry/type/Sector.java +++ b/core/src/mindustry/type/Sector.java @@ -1,8 +1,8 @@ package mindustry.type; import arc.math.geom.*; -import arc.util.*; import arc.util.ArcAnnotate.*; +import arc.util.*; import arc.util.io.*; import mindustry.*; import mindustry.ctype.*; @@ -34,6 +34,10 @@ public class Sector{ this.data = data; } + public boolean locked(){ + return true; + } + /** @return light dot product in the range [0, 1]. */ public float getLight(){ Vec3 normal = Tmp.v31.set(tile.v).rotate(Vec3.Y, -planet.getRotation()).nor(); @@ -87,6 +91,10 @@ public class Sector{ return new SectorRect(radius, center, planeTop, planeRight, angle); } + public boolean hasAttribute(SectorAttribute attribute){ + return (data.attributes & (1 << attribute.ordinal())) != 0; + } + public static class SectorRect{ public final Vec3 center, top, right; public final Vec3 result = new Vec3(); @@ -115,6 +123,7 @@ public class Sector{ public Block[] floors = {}; public int[] floorCounts = {}; + public int attributes; public void write(Writes write){ write.s(resources.length); @@ -129,6 +138,8 @@ public class Sector{ write.s(floors[i].id); write.i(floorCounts[i]); } + + write.i(attributes); } public void read(Reads read){ @@ -144,6 +155,12 @@ public class Sector{ floors[i] = Vars.content.block(read.s()); floorCounts[i] = read.i(); } + attributes = read.i(); } } + + public enum SectorAttribute{ + /** Requires naval technology to land on, e.g. mostly water */ + naval + } } diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 945938cdd4..ed1fe67710 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -19,6 +19,7 @@ import mindustry.graphics.*; import mindustry.graphics.g3d.*; import mindustry.graphics.g3d.PlanetGrid.*; import mindustry.type.*; +import mindustry.type.Sector.*; import mindustry.ui.*; import static mindustry.Vars.*; @@ -30,7 +31,7 @@ public class PlanetDialog extends FloatingDialog{ borderColor = Pal.accent.cpy().a(0.3f), shadowColor = new Color(0, 0, 0, 0.7f); private static final float camLength = 4f; - float outlineRad = 1.15f; + float outlineRad = 1.16f; //the base planet that's being rendered private final Planet solarSystem = Planets.sun; @@ -59,7 +60,7 @@ public class PlanetDialog extends FloatingDialog{ buttons.addImageTextButton("$techtree", Icon.tree, () -> ui.tech.show()).size(230f, 64f); camRelative.set(0, 0f, camLength); - projector.setScaling(1f / 300f); + projector.setScaling(1f / 150f); update(() -> { Vec3 v = Tmp.v33.set(Core.input.mouseX(), Core.input.mouseY(), 0); @@ -95,7 +96,7 @@ public class PlanetDialog extends FloatingDialog{ addListener(new ElementGestureListener(){ @Override public void tap(InputEvent event, float x, float y, int count, KeyCode button){ - selected = hovered; + selected = hovered != null && hovered.locked() ? null : hovered; if(selected != null){ updateSelected(); } @@ -158,10 +159,15 @@ public class PlanetDialog extends FloatingDialog{ if(hovered != null){ Draw.batch(projector, () -> { setPlane(hovered); + Draw.color(Color.white, Pal.accent, Mathf.absin(5f, 1f)); - if(false){ //TODO locked check - Draw.rect(Icon.lock.getRegion(), 0, 0); + TextureRegion icon = hovered.locked() ? Icon.lock.getRegion() : hovered.hasAttribute(SectorAttribute.naval) ? Liquids.water.icon(Cicon.large) : null; + + if(icon != null){ + Draw.rect(icon, 0, 0); } + + Draw.reset(); }); } diff --git a/core/src/mindustry/world/blocks/logic/LogicExecutor.java b/core/src/mindustry/world/blocks/logic/LogicExecutor.java index ef7eac06ea..65b8b9599a 100644 --- a/core/src/mindustry/world/blocks/logic/LogicExecutor.java +++ b/core/src/mindustry/world/blocks/logic/LogicExecutor.java @@ -1,6 +1,7 @@ package mindustry.world.blocks.logic; import arc.math.*; +import mindustry.gen.*; public class LogicExecutor{ Instruction[] instructions; @@ -17,26 +18,69 @@ public class LogicExecutor{ if(counter >= instructions.length) counter = 0; } + Tilec device(short id){ + return null; //TODO + } + interface Instruction{ void exec(); } - class RegisterI{ + class RegisterI implements Instruction{ + /** operation to perform */ Op op; - short from, to; - int immediate; + /** destination register */ + short dest; + /** registers to take data from. -1 for no register. */ + short left, right; + /** left/right immediate values, only used if no registers are present. */ + int ileft, iright; + @Override public void exec(){ - registers[to] = op.function.get(registers[from], immediate); + registers[dest] = op.function.get(left == -1 ? ileft : registers[left], right == -1 ? iright : registers[right]); } } - static class ReadI{ + class ReadI implements Instruction{ + /** register to write result to */ + short dest; + /** device to read from */ + short device; + /** the type of data to be read */ + ReadOp op; + /** any additional read parameters */ + int parameter; + @Override + public void exec(){ + registers[dest] = op.function.get(device(device), parameter); + } } - static class WriteI{ + class WriteI implements Instruction{ + @Override + public void exec(){ + + } + } + + enum ReadOp{ + item((tile, id) -> tile.items() == null ? 0 : tile.items().get(id)), + itemTotal((tile, param) -> tile.items() == null ? 0 : tile.items().total()); + + final ReadOpLambda function; + final String symbol; + + ReadOp(ReadOpLambda function){ + this.symbol = name(); + this.function = function; + } + + interface ReadOpLambda{ + int get(Tilec tile, int parameter); + } } enum Op{ @@ -52,16 +96,18 @@ public class LogicExecutor{ and("and", (a, b) -> a & b), xor("xor", (a, b) -> a ^ b); - final BinaryOp function; + final OpLambda function; final String symbol; - Op(String symbol, BinaryOp function){ + Op(String symbol, OpLambda function){ this.symbol = symbol; this.function = function; } + + interface OpLambda{ + int get(int a, int b); + } } - interface BinaryOp{ - int get(int a, int b); - } + } diff --git a/core/src/mindustry/world/modules/ItemModule.java b/core/src/mindustry/world/modules/ItemModule.java index ef91960e87..d96a0f89c5 100644 --- a/core/src/mindustry/world/modules/ItemModule.java +++ b/core/src/mindustry/world/modules/ItemModule.java @@ -92,6 +92,10 @@ public class ItemModule extends BlockModule{ return null; } + public int get(int id){ + return items[id]; + } + public int get(Item item){ return items[item.id]; } diff --git a/tools/src/mindustry/tools/SectorDataGenerator.java b/tools/src/mindustry/tools/SectorDataGenerator.java index 77c0134e3e..337cf05027 100644 --- a/tools/src/mindustry/tools/SectorDataGenerator.java +++ b/tools/src/mindustry/tools/SectorDataGenerator.java @@ -50,14 +50,24 @@ public class SectorDataGenerator{ ObjectSet content = new ObjectSet<>(); world.loadSector(sector); + int waterFloors = 0, totalFloors = 0; + state.rules.sector = sector; for(Tile tile : world.tiles){ + if(world.getDarkness(tile.x, tile.y) >= 3){ + continue; + } + Item item = tile.floor().itemDrop; Liquid liquid = tile.floor().liquidDrop; if(item != null) content.add(item); if(liquid != null) content.add(liquid); if(!tile.block().isStatic()){ + totalFloors ++; + if(liquid == Liquids.water){ + waterFloors ++; + } floors.increment(tile.floor()); if(tile.overlay() != Blocks.air){ floors.increment(tile.overlay()); @@ -80,6 +90,13 @@ public class SectorDataGenerator{ data.resources = content.asArray().sort(Structs.comps(Structs.comparing(Content::getContentType), Structs.comparingInt(c -> c.id))).toArray(UnlockableContent.class); + //50% water -> naval attribute + //TODO also select sectors with water spawns + if((float)waterFloors / totalFloors >= 0.5f){ + Log.info("Floor percentage for sector {0} : {1}", sector.id, (int)((float)waterFloors / totalFloors * 100)); + data.attributes |= (1 << SectorAttribute.naval.ordinal()); + } + if(count[0]++ % 10 == 0){ Log.info("&lyDone with sector &lm{0}/{1}", count[0], planet.sectors.size); }