mirror of
https://github.com/Anuken/Mindustry.git
synced 2024-09-21 05:17:50 +03:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
f0fa643930
@ -12,8 +12,11 @@ import io.anuke.mindustry.entities.*;
|
||||
import io.anuke.mindustry.entities.type.*;
|
||||
import io.anuke.mindustry.game.*;
|
||||
import io.anuke.mindustry.input.*;
|
||||
import io.anuke.mindustry.type.Category;
|
||||
import io.anuke.mindustry.ui.Cicon;
|
||||
import io.anuke.mindustry.world.*;
|
||||
import io.anuke.mindustry.world.blocks.units.MechPad;
|
||||
import io.anuke.mindustry.world.meta.BlockFlag;
|
||||
|
||||
import static io.anuke.mindustry.Vars.*;
|
||||
|
||||
@ -57,6 +60,20 @@ public class OverlayRenderer{
|
||||
Draw.reset();
|
||||
}
|
||||
});
|
||||
|
||||
if(ui.hudfrag.blockfrag.currentCategory == Category.upgrade){
|
||||
for(Tile mechpad: indexer.getAllied(player.getTeam(), BlockFlag.mechPad)){
|
||||
if(!rect.setSize(Core.camera.width * 0.9f, Core.camera.height * 0.9f)
|
||||
.setCenter(Core.camera.position.x, Core.camera.position.y).contains(mechpad.x, mechpad.y)){
|
||||
|
||||
Tmp.v1.set(mechpad.worldx(), mechpad.worldy()).sub(Core.camera.position.x, Core.camera.position.y).setLength(indicatorLength);
|
||||
|
||||
Lines.stroke(2f, ((MechPad) mechpad.block()).mech.engineColor);
|
||||
Lines.lineAngle(Core.camera.position.x + Tmp.v1.x, Core.camera.position.y + Tmp.v1.y, Tmp.v1.angle(), 0.5f);
|
||||
Draw.reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(player.isDead()) return; //dead players don't draw
|
||||
|
@ -26,10 +26,11 @@ import static io.anuke.mindustry.Vars.*;
|
||||
public class PlacementFragment extends Fragment{
|
||||
final int rowWidth = 4;
|
||||
|
||||
public Category currentCategory = Category.distribution;
|
||||
Array<Block> returnArray = new Array<>();
|
||||
Array<Category> returnCatArray = new Array<>();
|
||||
boolean[] categoryEmpty = new boolean[Category.all.length];
|
||||
Category currentCategory = Category.distribution;
|
||||
ObjectMap<Category,Block> selectedBlocks = new ObjectMap<Category,Block>();
|
||||
Block hovered, lastDisplay;
|
||||
Tile lastHover;
|
||||
Tile hoverTile;
|
||||
@ -49,6 +50,10 @@ public class PlacementFragment extends Fragment{
|
||||
rebuild();
|
||||
}
|
||||
});
|
||||
|
||||
Events.on(ResetEvent.class, event -> {
|
||||
selectedBlocks.clear();
|
||||
});
|
||||
}
|
||||
|
||||
void rebuild(){
|
||||
@ -112,6 +117,7 @@ public class PlacementFragment extends Fragment{
|
||||
ImageButton button = blockTable.addImageButton(Icon.lockedSmall, Styles.selecti, () -> {
|
||||
if(unlocked(block)){
|
||||
control.input.block = control.input.block == block ? null : block;
|
||||
selectedBlocks.put(currentCategory, control.input.block);
|
||||
}
|
||||
}).size(46f).group(group).name("block-" + block.name).get();
|
||||
|
||||
@ -266,6 +272,12 @@ public class PlacementFragment extends Fragment{
|
||||
|
||||
categories.addImageButton(Core.atlas.drawable("icon-" + cat.name() + "-smaller"), Styles.clearToggleTransi, () -> {
|
||||
currentCategory = cat;
|
||||
if(control.input.block != null){
|
||||
if(selectedBlocks.get(currentCategory) == null){
|
||||
selectFirstBlock(currentCategory);
|
||||
}
|
||||
control.input.block = selectedBlocks.get(currentCategory);
|
||||
}
|
||||
rebuildCategory.run();
|
||||
}).group(group).update(i -> i.setChecked(currentCategory == cat)).name("category-" + cat.name());
|
||||
}
|
||||
@ -301,6 +313,16 @@ public class PlacementFragment extends Fragment{
|
||||
return returnArray;
|
||||
}
|
||||
|
||||
Block selectFirstBlock(Category cat) {
|
||||
for(Block block : getByCategory(currentCategory)){
|
||||
if(unlocked(block)){
|
||||
selectedBlocks.put(currentCategory, block);
|
||||
return block;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
boolean unlocked(Block block){
|
||||
return !world.isZone() || data.isUnlocked(block);
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package io.anuke.mindustry.world.blocks.units;
|
||||
|
||||
import io.anuke.annotations.Annotations.*;
|
||||
import io.anuke.arc.*;
|
||||
import io.anuke.arc.collection.EnumSet;
|
||||
import io.anuke.arc.graphics.g2d.*;
|
||||
import io.anuke.arc.math.*;
|
||||
import io.anuke.arc.math.geom.*;
|
||||
@ -24,7 +25,7 @@ import java.io.*;
|
||||
import static io.anuke.mindustry.Vars.*;
|
||||
|
||||
public class MechPad extends Block{
|
||||
protected @NonNull Mech mech;
|
||||
public @NonNull Mech mech;
|
||||
protected float buildTime = 60 * 5;
|
||||
|
||||
public MechPad(String name){
|
||||
@ -33,6 +34,7 @@ public class MechPad extends Block{
|
||||
solid = false;
|
||||
hasPower = true;
|
||||
layer = Layer.overlay;
|
||||
flags = EnumSet.of(BlockFlag.mechPad);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -13,7 +13,9 @@ public enum BlockFlag{
|
||||
/** Only the command center block.*/
|
||||
comandCenter,
|
||||
/** Repair point. */
|
||||
repair;
|
||||
repair,
|
||||
/** Upgrade pad. */
|
||||
mechPad;
|
||||
|
||||
public final static BlockFlag[] all = values();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user