Added final campaign map (WIP, untested)
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
package mindustry.world.blocks.campaign;
|
||||
|
||||
import arc.Graphics.*;
|
||||
import arc.Graphics.Cursor.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.util.*;
|
||||
import mindustry.annotations.Annotations.*;
|
||||
import mindustry.content.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
import static mindustry.Vars.*;
|
||||
|
||||
public class Accelerator extends Block{
|
||||
public @Load("launch-arrow") TextureRegion arrowRegion;
|
||||
|
||||
public Block launching = Blocks.coreNucleus;
|
||||
public int[] capacities = new int[content.items().size];
|
||||
|
||||
public Accelerator(String name){
|
||||
super(name);
|
||||
update = true;
|
||||
solid = true;
|
||||
hasItems = true;
|
||||
itemCapacity = 8000;
|
||||
configurable = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(){
|
||||
for(ItemStack stack : launching.requirements){
|
||||
capacities[stack.item.id] = stack.amount;
|
||||
}
|
||||
consumes.items(launching.requirements);
|
||||
super.init();
|
||||
}
|
||||
|
||||
public class AcceleratorBuild extends Building{
|
||||
|
||||
@Override
|
||||
public void draw(){
|
||||
super.draw();
|
||||
|
||||
for(int l = 0; l < 4; l++){
|
||||
float length = 7f + l * 5f;
|
||||
Draw.color(team.color, Pal.darkMetal, Mathf.absin(Time.time() + l*50f, 10f, 1f));
|
||||
|
||||
for(int i = 0; i < 4; i++){
|
||||
float rot = i*90f + 45f;
|
||||
Draw.rect(arrowRegion, x + Angles.trnsx(rot, length), y + Angles.trnsy(rot, length), rot + 180f);
|
||||
}
|
||||
}
|
||||
|
||||
float rad = size * tilesize / 2f * 0.74f;
|
||||
float scl = 2f;
|
||||
|
||||
Draw.z(Layer.bullet - 0.0001f);
|
||||
Lines.stroke(1.75f, Pal.accent);
|
||||
Lines.square(x, y, rad * 1.22f, 45f);
|
||||
|
||||
Lines.stroke(3f, Pal.accent);
|
||||
Lines.square(x, y, rad, Time.time() / scl);
|
||||
Lines.square(x, y, rad, -Time.time() / scl);
|
||||
|
||||
Draw.color(team.color);
|
||||
|
||||
for(int i = 0; i < 4; i++){
|
||||
float rot = i*90f + 45f + (-Time.time()/3f)%360f;
|
||||
float length = 26f;
|
||||
Draw.rect(arrowRegion, x + Angles.trnsx(rot, length), y + Angles.trnsy(rot, length), rot + 180f);
|
||||
}
|
||||
|
||||
Draw.reset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Cursor getCursor(){
|
||||
return !state.isCampaign() || !consValid() ? SystemCursor.arrow : super.getCursor();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void buildConfiguration(Table table){
|
||||
deselect();
|
||||
|
||||
if(!state.isCampaign() || !consValid()) return;
|
||||
|
||||
ui.showInfo("@indev.campaign");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaximumAccepted(Item item){
|
||||
return capacities[item.id];
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptItem(Building source, Item item){
|
||||
return items.get(item) < getMaximumAccepted(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package mindustry.world.blocks.campaign;
|
||||
|
||||
import arc.*;
|
||||
import arc.Graphics.*;
|
||||
import arc.Graphics.Cursor.*;
|
||||
import arc.graphics.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
@@ -54,6 +56,11 @@ public class LaunchPad extends Block{
|
||||
|
||||
public class LaunchPadBuild extends Building{
|
||||
|
||||
@Override
|
||||
public Cursor getCursor(){
|
||||
return !state.isCampaign() ? SystemCursor.arrow : super.getCursor();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(){
|
||||
super.draw();
|
||||
|
||||
@@ -63,6 +63,8 @@ public class CoreBlock extends StorageBlock{
|
||||
CoreBlock block = (CoreBlock)tile.block();
|
||||
Fx.spawn.at(entity);
|
||||
|
||||
player.set(entity);
|
||||
|
||||
if(!net.client()){
|
||||
Unit unit = block.unitType.create(tile.team());
|
||||
unit.set(entity);
|
||||
|
||||
Reference in New Issue
Block a user