Added monsoon pad / Renamed factories to pads
BIN
core/assets-raw/sprites/blocks/extra/shadow-round-3.png
Normal file
|
After Width: | Height: | Size: 251 B |
|
Before Width: | Height: | Size: 310 B After Width: | Height: | Size: 310 B |
|
Before Width: | Height: | Size: 306 B After Width: | Height: | Size: 306 B |
|
Before Width: | Height: | Size: 266 B After Width: | Height: | Size: 266 B |
|
Before Width: | Height: | Size: 363 B After Width: | Height: | Size: 363 B |
|
Before Width: | Height: | Size: 384 B After Width: | Height: | Size: 384 B |
|
Before Width: | Height: | Size: 266 B After Width: | Height: | Size: 266 B |
|
Before Width: | Height: | Size: 443 B After Width: | Height: | Size: 443 B |
|
Before Width: | Height: | Size: 284 B After Width: | Height: | Size: 284 B |
BIN
core/assets-raw/sprites/blocks/units/monsoon-pad-top-open.png
Normal file
|
After Width: | Height: | Size: 339 B |
BIN
core/assets-raw/sprites/blocks/units/monsoon-pad-top.png
Normal file
|
After Width: | Height: | Size: 332 B |
BIN
core/assets-raw/sprites/blocks/units/monsoon-pad.png
Normal file
|
After Width: | Height: | Size: 461 B |
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 140 KiB |
@@ -131,9 +131,10 @@ public class Recipes implements ContentList{
|
|||||||
//new Recipe(units, UpgradeBlocks.deltaFactory, new ItemStack(Items.tungsten, 30), new ItemStack(Items.lead, 50), new ItemStack(Items.silicon, 30));
|
//new Recipe(units, UpgradeBlocks.deltaFactory, new ItemStack(Items.tungsten, 30), new ItemStack(Items.lead, 50), new ItemStack(Items.silicon, 30));
|
||||||
|
|
||||||
//actual unit related stuff
|
//actual unit related stuff
|
||||||
new Recipe(units, UnitBlocks.droneFactory, new ItemStack(Items.tungsten, 50), new ItemStack(Items.lead, 90), new ItemStack(Items.silicon, 130));
|
new Recipe(units, UnitBlocks.dronePad, new ItemStack(Items.tungsten, 50), new ItemStack(Items.lead, 90), new ItemStack(Items.silicon, 130));
|
||||||
new Recipe(units, UnitBlocks.fabricatorFactory, new ItemStack(Items.carbide, 70), new ItemStack(Items.thorium, 100), new ItemStack(Items.lead, 150), new ItemStack(Items.silicon, 300));
|
new Recipe(units, UnitBlocks.fabricatorPad, new ItemStack(Items.carbide, 70), new ItemStack(Items.thorium, 100), new ItemStack(Items.lead, 150), new ItemStack(Items.silicon, 300));
|
||||||
new Recipe(units, UnitBlocks.interceptorFactory, new ItemStack(Items.carbide, 70), new ItemStack(Items.thorium, 100), new ItemStack(Items.lead, 150), new ItemStack(Items.silicon, 300));
|
new Recipe(units, UnitBlocks.interceptorPad, new ItemStack(Items.carbide, 70), new ItemStack(Items.thorium, 100), new ItemStack(Items.lead, 150), new ItemStack(Items.silicon, 300));
|
||||||
|
new Recipe(units, UnitBlocks.monsoonPad, new ItemStack(Items.carbide, 70), new ItemStack(Items.thorium, 100), new ItemStack(Items.lead, 150), new ItemStack(Items.silicon, 300));
|
||||||
|
|
||||||
new Recipe(units, UnitBlocks.repairPoint, new ItemStack(Items.lead, 30), new ItemStack(Items.tungsten, 30), new ItemStack(Items.silicon, 30));
|
new Recipe(units, UnitBlocks.repairPoint, new ItemStack(Items.lead, 30), new ItemStack(Items.tungsten, 30), new ItemStack(Items.silicon, 30));
|
||||||
new Recipe(units, UnitBlocks.resupplyPoint, new ItemStack(Items.lead, 30), new ItemStack(Items.tungsten, 30), new ItemStack(Items.silicon, 30));
|
new Recipe(units, UnitBlocks.resupplyPoint, new ItemStack(Items.lead, 30), new ItemStack(Items.tungsten, 30), new ItemStack(Items.silicon, 30));
|
||||||
@@ -257,7 +258,7 @@ public class Recipes implements ContentList{
|
|||||||
new Recipe(units, UnitBlocks.dropPoint, new ItemStack(Items.carbide, 10));
|
new Recipe(units, UnitBlocks.dropPoint, new ItemStack(Items.carbide, 10));
|
||||||
new Recipe(units, UnitBlocks.resupplyPoint, new ItemStack(Items.carbide, 10));
|
new Recipe(units, UnitBlocks.resupplyPoint, new ItemStack(Items.carbide, 10));
|
||||||
|
|
||||||
new Recipe(units, UnitBlocks.droneFactory, new ItemStack(Items.tungsten, 50));
|
new Recipe(units, UnitBlocks.dronePad, new ItemStack(Items.tungsten, 50));
|
||||||
new Recipe(units, UnitBlocks.reconstructor, new ItemStack(Items.tungsten, 1));
|
new Recipe(units, UnitBlocks.reconstructor, new ItemStack(Items.tungsten, 1));
|
||||||
|
|
||||||
new Recipe(units, UnitBlocks.overdriveProjector, new ItemStack(Items.tungsten, 1));
|
new Recipe(units, UnitBlocks.overdriveProjector, new ItemStack(Items.tungsten, 1));
|
||||||
|
|||||||
@@ -8,12 +8,13 @@ import io.anuke.mindustry.world.Block;
|
|||||||
import io.anuke.mindustry.world.blocks.units.*;
|
import io.anuke.mindustry.world.blocks.units.*;
|
||||||
|
|
||||||
public class UnitBlocks extends BlockList implements ContentList{
|
public class UnitBlocks extends BlockList implements ContentList{
|
||||||
public static Block resupplyPoint, repairPoint, droneFactory, fabricatorFactory, interceptorFactory, dropPoint,
|
public static Block resupplyPoint, repairPoint, dronePad,
|
||||||
reconstructor, overdriveProjector, shieldProjector, commandCenter;
|
fabricatorPad, interceptorPad, monsoonPad, scoutPad, titanPad,
|
||||||
|
dropPoint, reconstructor, overdriveProjector, shieldProjector, commandCenter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(){
|
public void load(){
|
||||||
droneFactory = new UnitFactory("drone-factory"){{
|
dronePad = new UnitFactory("drone-pad"){{
|
||||||
type = UnitTypes.drone;
|
type = UnitTypes.drone;
|
||||||
produceTime = 800;
|
produceTime = 800;
|
||||||
size = 2;
|
size = 2;
|
||||||
@@ -21,7 +22,7 @@ public class UnitBlocks extends BlockList implements ContentList{
|
|||||||
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30)});
|
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30)});
|
||||||
}};
|
}};
|
||||||
|
|
||||||
fabricatorFactory = new UnitFactory("fabricator-factory"){{
|
fabricatorPad = new UnitFactory("fabricator-pad"){{
|
||||||
type = UnitTypes.fabricator;
|
type = UnitTypes.fabricator;
|
||||||
produceTime = 1600;
|
produceTime = 1600;
|
||||||
size = 2;
|
size = 2;
|
||||||
@@ -29,7 +30,7 @@ public class UnitBlocks extends BlockList implements ContentList{
|
|||||||
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80)});
|
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 70), new ItemStack(Items.lead, 80), new ItemStack(Items.titanium, 80)});
|
||||||
}};
|
}};
|
||||||
|
|
||||||
interceptorFactory = new UnitFactory("interceptor-factory"){{
|
interceptorPad = new UnitFactory("interceptor-pad"){{
|
||||||
type = UnitTypes.interceptor;
|
type = UnitTypes.interceptor;
|
||||||
produceTime = 1300;
|
produceTime = 1300;
|
||||||
size = 2;
|
size = 2;
|
||||||
@@ -37,6 +38,15 @@ public class UnitBlocks extends BlockList implements ContentList{
|
|||||||
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 30), new ItemStack(Items.titanium, 40)});
|
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 30), new ItemStack(Items.titanium, 40)});
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
monsoonPad = new UnitFactory("monsoon-pad"){{
|
||||||
|
type = UnitTypes.monsoon;
|
||||||
|
produceTime = 1400;
|
||||||
|
size = 3;
|
||||||
|
consumes.power(0.14f);
|
||||||
|
shadow = "shadow-round-3";
|
||||||
|
consumes.items(new ItemStack[]{new ItemStack(Items.silicon, 40), new ItemStack(Items.titanium, 50), new ItemStack(Items.plastanium, 50)});
|
||||||
|
}};
|
||||||
|
|
||||||
resupplyPoint = new ResupplyPoint("resupply-point"){{
|
resupplyPoint = new ResupplyPoint("resupply-point"){{
|
||||||
shadow = "shadow-round-1";
|
shadow = "shadow-round-1";
|
||||||
itemCapacity = 30;
|
itemCapacity = 30;
|
||||||
|
|||||||
@@ -372,7 +372,7 @@ public class Control extends Module{
|
|||||||
if(!headless){
|
if(!headless){
|
||||||
ui.showInfoFade("$text.sector.unlocked");
|
ui.showInfoFade("$text.sector.unlocked");
|
||||||
}
|
}
|
||||||
}else if(world.getSector().missions.get(world.getSector().completedMissions).isComplete()){
|
}else if(world.getSector().currentMission().isComplete()){
|
||||||
//increment completed missions, check next index next frame
|
//increment completed missions, check next index next frame
|
||||||
world.getSector().completedMissions ++;
|
world.getSector().completedMissions ++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,10 @@ public class Sector{
|
|||||||
/**Difficulty of the sector, measured by calculating distance from origin and applying scaling.*/
|
/**Difficulty of the sector, measured by calculating distance from origin and applying scaling.*/
|
||||||
public transient int difficulty;
|
public transient int difficulty;
|
||||||
|
|
||||||
|
public Mission currentMission(){
|
||||||
|
return missions.get(completedMissions);
|
||||||
|
}
|
||||||
|
|
||||||
public int getSeed(){
|
public int getSeed(){
|
||||||
return Bits.packInt(x, y);
|
return Bits.packInt(x, y);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import io.anuke.mindustry.game.GameMode;
|
|||||||
import io.anuke.mindustry.game.Team;
|
import io.anuke.mindustry.game.Team;
|
||||||
import io.anuke.mindustry.maps.Sector;
|
import io.anuke.mindustry.maps.Sector;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
|
import io.anuke.ucore.scene.ui.layout.Table;
|
||||||
import io.anuke.ucore.util.Bundles;
|
import io.anuke.ucore.util.Bundles;
|
||||||
|
|
||||||
public class BattleMission implements Mission{
|
public class BattleMission implements Mission{
|
||||||
@@ -15,6 +16,11 @@ public class BattleMission implements Mission{
|
|||||||
this.difficulty = difficulty;
|
this.difficulty = difficulty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void display(Table table){
|
||||||
|
table.add("$text.mission.battle");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public GameMode getMode(){
|
public GameMode getMode(){
|
||||||
return GameMode.noWaves;
|
return GameMode.noWaves;
|
||||||
|
|||||||
@@ -3,11 +3,13 @@ package io.anuke.mindustry.maps.missions;
|
|||||||
import io.anuke.mindustry.game.GameMode;
|
import io.anuke.mindustry.game.GameMode;
|
||||||
import io.anuke.mindustry.maps.Sector;
|
import io.anuke.mindustry.maps.Sector;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
|
import io.anuke.ucore.scene.ui.layout.Table;
|
||||||
|
|
||||||
public interface Mission{
|
public interface Mission{
|
||||||
boolean isComplete();
|
boolean isComplete();
|
||||||
String displayString();
|
String displayString();
|
||||||
GameMode getMode();
|
GameMode getMode();
|
||||||
|
void display(Table table);
|
||||||
|
|
||||||
default void generate(Tile[][] tiles, Sector sector){}
|
default void generate(Tile[][] tiles, Sector sector){}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package io.anuke.mindustry.maps.missions;
|
|||||||
import io.anuke.mindustry.Vars;
|
import io.anuke.mindustry.Vars;
|
||||||
import io.anuke.mindustry.game.GameMode;
|
import io.anuke.mindustry.game.GameMode;
|
||||||
import io.anuke.mindustry.type.Item;
|
import io.anuke.mindustry.type.Item;
|
||||||
|
import io.anuke.ucore.scene.ui.layout.Table;
|
||||||
import io.anuke.ucore.util.Bundles;
|
import io.anuke.ucore.util.Bundles;
|
||||||
|
|
||||||
public class ResourceMission implements Mission{
|
public class ResourceMission implements Mission{
|
||||||
@@ -14,6 +15,11 @@ public class ResourceMission implements Mission{
|
|||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void display(Table table){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public GameMode getMode(){
|
public GameMode getMode(){
|
||||||
return GameMode.waves;
|
return GameMode.waves;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package io.anuke.mindustry.maps.missions;
|
package io.anuke.mindustry.maps.missions;
|
||||||
|
|
||||||
import io.anuke.mindustry.game.GameMode;
|
import io.anuke.mindustry.game.GameMode;
|
||||||
|
import io.anuke.ucore.scene.ui.layout.Table;
|
||||||
import io.anuke.ucore.util.Bundles;
|
import io.anuke.ucore.util.Bundles;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.state;
|
import static io.anuke.mindustry.Vars.state;
|
||||||
@@ -12,6 +13,11 @@ public class WaveMission implements Mission{
|
|||||||
this.target = target;
|
this.target = target;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void display(Table table){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public GameMode getMode(){
|
public GameMode getMode(){
|
||||||
return GameMode.waves;
|
return GameMode.waves;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package io.anuke.mindustry.ui.dialogs;
|
|||||||
|
|
||||||
import io.anuke.mindustry.core.GameState.State;
|
import io.anuke.mindustry.core.GameState.State;
|
||||||
import io.anuke.mindustry.net.Net;
|
import io.anuke.mindustry.net.Net;
|
||||||
|
import io.anuke.ucore.scene.ui.layout.Table;
|
||||||
import io.anuke.ucore.util.Bundles;
|
import io.anuke.ucore.util.Bundles;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
@@ -10,10 +11,24 @@ public class PausedDialog extends FloatingDialog{
|
|||||||
public boolean wasPaused = false;
|
public boolean wasPaused = false;
|
||||||
private SaveDialog save = new SaveDialog();
|
private SaveDialog save = new SaveDialog();
|
||||||
private LoadDialog load = new LoadDialog();
|
private LoadDialog load = new LoadDialog();
|
||||||
|
private Table missionTable;
|
||||||
|
|
||||||
public PausedDialog(){
|
public PausedDialog(){
|
||||||
super("$text.menu");
|
super("$text.menu");
|
||||||
setup();
|
setup();
|
||||||
|
|
||||||
|
shown(this::rebuild);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rebuild(){
|
||||||
|
missionTable.clear();
|
||||||
|
if(world.getSector() != null){
|
||||||
|
missionTable.add("[LIGHT_GRAY]" + Bundles.format("text.mission", ""));
|
||||||
|
missionTable.row();
|
||||||
|
missionTable.table(t -> {
|
||||||
|
world.getSector().currentMission().display(t);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup(){
|
void setup(){
|
||||||
@@ -28,6 +43,9 @@ public class PausedDialog extends FloatingDialog{
|
|||||||
if(!Net.active()) state.set(State.paused);
|
if(!Net.active()) state.set(State.paused);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
content().table(t -> missionTable = t);
|
||||||
|
content().row();
|
||||||
|
|
||||||
if(!mobile){
|
if(!mobile){
|
||||||
content().defaults().width(220).height(50);
|
content().defaults().width(220).height(50);
|
||||||
|
|
||||||
|
|||||||