From 6ef31d0ec10c6dfa4ab3b5740f6f425a2bede766 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 5 Aug 2018 19:17:46 -0400 Subject: [PATCH] Added spawner grace period --- .../maps/generation/FortressGenerator.java | 9 ++++++++- .../mindustry/world/blocks/units/UnitPad.java | 15 ++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java b/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java index db0ead142f..77c92d86b3 100644 --- a/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java +++ b/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java @@ -46,6 +46,9 @@ public class FortressGenerator{ //tungsten duo and drone outpost new Structure(0.02f, Items.tungsten, "BgEADXR1bmdzdGVuLXdhbGwEAA1jYXJiaWRlLWRyaWxsAwADZHVvAgATdHVuZ3N0ZW4td2FsbC1sYXJnZQAAA2FpcgUACWRyb25lLXBhZAUHAAAAAAEDAQMCAgAAAAAAAAAAAQADAAADAAMBAgAAAAABAAQBBQAAAAECAAAAAAEAAwAAAAAAAQIAAAAAAQABAQEBAQEBAg=="), + //resupply point + new Structure(0.03f, Items.lead, "BgEADXR1bmdzdGVuLXdhbGwCAAtzb2xhci1wYW5lbAUAA2R1bwMADnJlc3VwcGx5LXBvaW50AAADYWlyBAANY2FyYmlkZS1kcmlsbAUFAQABAAEAAAAAAAEAAgMBAQEBAQABAAMDBAEFAQEAAQACAwEBAQEBAAEBAQEBAQAAAAA="), + //lead storage new Structure(0.02f, Items.lead, vaults), @@ -64,6 +67,9 @@ public class FortressGenerator{ //2x interceptor outpost new Structure(0.02f, Items.lead, "CgMAEXNvbGFyLXBhbmVsLWxhcmdlBgADZHVvAgAPaW50ZXJjZXB0b3ItcGFkBAASY2FyYmlkZS13YWxsLWxhcmdlBwAOcmVzdXBwbHktcG9pbnQAAANhaXIFAAtzb2xhci1wYW5lbAEADGNhcmJpZGUtd2FsbAkAC2Rpc3RyaWJ1dG9yCAALbGFzZXItZHJpbGwKCAEAAQMBAwEDAQMBAwECAAABAAIDAAAAAAAAAAABAgAAAQAAAAAAAAADAQAAAQIBAgQDAAAFAAAAAAAAAAYCAQMAAAAABwAIAAAACQAAAAECBAMAAAEAAAAAAAABAAABAgAAAAAFAAAAAAAAAAYCAQIBAAIDAAAAAAMBAAABAgECAQAAAAAAAAAAAAAAAQIAAAEAAQEBAQEBAQEBAQEBAAA="), + //resupply point (again) + new Structure(0.02f, Items.lead, "BgEADXR1bmdzdGVuLXdhbGwCAAtzb2xhci1wYW5lbAUAA2R1bwMADnJlc3VwcGx5LXBvaW50AAADYWlyBAANY2FyYmlkZS1kcmlsbAUFAQABAAEAAAAAAAEAAgMBAQEBAQABAAMDBAEFAQEAAQACAwEBAQEBAAEBAQEBAQAAAAA="), + //coal laser outpost new Structure(0.03f, null, "BgEADHRob3JpdW0td2FsbAMABmxhbmNlcgUAFGNvbWJ1c3Rpb24tZ2VuZXJhdG9yBAANY2FyYmlkZS1kcmlsbAAAA2FpcgIAC3NvbGFyLXBhbmVsBwcAAAEAAQABAQEBAQEBAAAAAQACAgMAAAACAAEAAAABAAICAAAAAAIAAQAAAAEAAQAEAQUAAQABAAAAAQACAAMBAAMCAAEAAAABAAIAAAMAAwIAAQAAAAEAAQABAwEDAQABAA=="), @@ -123,7 +129,6 @@ public class FortressGenerator{ void genOutposts(){ int padding = 10; int maxDifficulty = 13; - float baseChance = 0.4f; Array selected = new Array<>(); Array used = new Array<>(); Rectangle rect = new Rectangle(); @@ -135,6 +140,8 @@ public class FortressGenerator{ selected.add(structures[i]); } + float baseChance = 0.8f / selected.size; + used.add(new Rectangle(enemyX - base.width()/2, enemyY - base.height()/2, base.width(), base.height())); int elev = gen.tiles[enemyX][enemyY].getElevation(); for(int x = 0; x < base.width(); x++){ diff --git a/core/src/io/anuke/mindustry/world/blocks/units/UnitPad.java b/core/src/io/anuke/mindustry/world/blocks/units/UnitPad.java index 71a8852cbc..d3b6cf7b1c 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/UnitPad.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/UnitPad.java @@ -36,6 +36,7 @@ import java.io.DataOutputStream; import java.io.IOException; public class UnitPad extends Block{ + protected float gracePeriodMultiplier = 8f; protected UnitType type; protected float produceTime = 1000f; protected float openDuration = 50f; @@ -101,8 +102,8 @@ public class UnitPad extends Block{ @Override public TextureRegion[] getIcon(){ return new TextureRegion[]{ - Draw.region(name), - Draw.region(name + "-top") + Draw.region(name), + Draw.region(name + "-top") }; } @@ -159,6 +160,10 @@ public class UnitPad extends Block{ boolean isEnemy = tile.getTeam() == Team.red; + if(isEnemy){ + entity.warmup += Timers.delta(); + } + if(!isEnemy){ //player-made spawners have default behavior @@ -170,7 +175,8 @@ public class UnitPad extends Block{ }else{ if(!entity.open) entity.speedScl = Mathf.lerpDelta(entity.speedScl, 0f, 0.05f); } - }else if(!entity.hasSpawned){ + //check if grace period had passed + }else if(!entity.hasSpawned && entity.warmup > produceTime*gracePeriodMultiplier){ //otherwise, it's an enemy, cheat by not requiring resources entity.buildTime += Timers.delta() / 4f; entity.speedScl = Mathf.lerpDelta(entity.speedScl, 1f, 0.05f); @@ -233,16 +239,19 @@ public class UnitPad extends Block{ public float time; public float speedScl; public boolean hasSpawned; + public float warmup; //only for enemy spawners @Override public void write(DataOutputStream stream) throws IOException{ stream.writeFloat(buildTime); + stream.writeFloat(warmup); stream.writeBoolean(hasSpawned); } @Override public void read(DataInputStream stream) throws IOException{ buildTime = stream.readFloat(); + warmup = stream.readFloat(); hasSpawned = stream.readBoolean(); } }