Payload resprites

This commit is contained in:
Anuken 2022-02-09 00:00:50 -05:00
parent d7cd9ab744
commit 257ecd397f
32 changed files with 75 additions and 25 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 351 B

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 569 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1013 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -531,3 +531,5 @@
63172=drone-center|block-drone-center-ui
63171=effect-drone|unit-effect-drone-ui
63170=world-processor|block-world-processor-ui
63169=reinforced-payload-conveyor|block-reinforced-payload-conveyor-ui
63168=reinforced-payload-router|block-reinforced-payload-router-ui

Binary file not shown.

View File

@ -1,10 +1,13 @@
package mindustry.ai;
import arc.*;
import arc.math.geom.*;
import arc.struct.*;
import arc.util.*;
import arc.util.async.*;
import mindustry.game.EventType.*;
import mindustry.gen.*;
import mindustry.world.*;
import static mindustry.Vars.*;
@ -22,13 +25,7 @@ public class ControlPathfinder implements Runnable{
TaskQueue queue = new TaskQueue();
//PATHFINDING THREAD DATA
IntMap<PathRequest> requests = new IntMap<>();
/** @return the next target ID to use as a unique path identifier. */
public int nextTargetId(){
return lastTargetId ++;
}
ObjectMap<Unit, PathRequest> requests = new ObjectMap<>();
public ControlPathfinder(){
Events.on(WorldLoadEvent.class, event -> {
@ -41,6 +38,16 @@ public class ControlPathfinder implements Runnable{
Events.on(ResetEvent.class, event -> stop());
}
/** @return the next target ID to use as a unique path identifier. */
public int nextTargetId(){
return lastTargetId ++;
}
public void getPathPosition(Unit unit, int pathId, Vec2 destination){
}
/** Starts or restarts the pathfinding thread. */
private void start(){
stop();
@ -56,6 +63,15 @@ public class ControlPathfinder implements Runnable{
requests.clear();
}
//distance heuristic: manhattan
private static float dstCost(float x, float y, float x2, float y2){
return Math.abs(x - x2) + Math.abs(x2 - y2);
}
private static float tileCost(Tile a, Tile b){
return 1f;
}
@Override
public void run(){
while(true){
@ -88,10 +104,34 @@ public class ControlPathfinder implements Runnable{
}
class PathRequest{
public int lastRequestFrame;
GridBits closed;
PQueue<Tile> queue;
public void update(long maxUpdateNs){
//TODO how will costs be computed? where will they be stored...?
int lastId;
int curId;
int lastFrame;
PathRequest(){
clear();
lastId = curId;
}
void update(long maxUpdateNs){
if(curId != lastId){
clear();
}
}
void clear(){
//TODO
closed = new GridBits(world.width(), world.height());
queue = new PQueue<>(16, (a, b) -> 0);
}
}
}

View File

@ -14,15 +14,11 @@ public class CommandAI extends AIController{
updateVisuals();
updateTargeting();
//TODO
if(attackTarget != null){
if(targetPos == null) targetPos = new Vec2();
targetPos.set(attackTarget);
}
if(targetPos != null){
moveTo(targetPos, attackTarget != null ? unit.type.range - 10f : 0f);

View File

@ -145,7 +145,8 @@ public class Blocks{
droneCenter,
//payloads
payloadConveyor, payloadRouter, payloadPropulsionTower, smallDeconstructor, deconstructor, constructor, largeConstructor, payloadLoader, payloadUnloader,
payloadConveyor, payloadRouter, reinforcedPayloadConveyor, reinforcedPayloadRouter, payloadPropulsionTower, smallDeconstructor, deconstructor, constructor, largeConstructor, payloadLoader, payloadUnloader,
//logic
message, switchBlock, microProcessor, logicProcessor, hyperProcessor, largeLogicDisplay, logicDisplay, memoryCell, memoryBank,
@ -3550,12 +3551,26 @@ public class Blocks{
//region payloads
payloadConveyor = new PayloadConveyor("payload-conveyor"){{
requirements(Category.units, with(Items.graphite, 10));
requirements(Category.units, with(Items.graphite, 10, Items.copper, 10));
canOverdrive = false;
}};
payloadRouter = new PayloadRouter("payload-router"){{
requirements(Category.units, with(Items.graphite, 15));
requirements(Category.units, with(Items.graphite, 15, Items.copper, 10));
canOverdrive = false;
}};
reinforcedPayloadConveyor = new PayloadConveyor("reinforced-payload-conveyor"){{
requirements(Category.units, with(Items.tungsten, 10));
moveTime = 35f;
canOverdrive = false;
health = 800;
}};
reinforcedPayloadRouter = new PayloadRouter("reinforced-payload-router"){{
requirements(Category.units, with(Items.tungsten, 15));
moveTime = 35f;
health = 800;
canOverdrive = false;
}};
@ -3570,7 +3585,7 @@ public class Blocks{
}};
smallDeconstructor = new PayloadDeconstructor("small-deconstructor"){{
requirements(Category.units, with(Items.thorium, 80, Items.silicon, 80, Items.graphite, 80));
requirements(Category.units, with(Items.beryllium, 100, Items.silicon, 100, Items.oxide, 50, Items.graphite, 80));
itemCapacity = 100;
consumes.power(1f);
size = 3;
@ -3579,7 +3594,7 @@ public class Blocks{
//TODO consider usefulness and applicability to serpulo
deconstructor = new PayloadDeconstructor("deconstructor"){{
requirements(Category.units, with(Items.thorium, 250, Items.silicon, 200, Items.graphite, 250));
requirements(Category.units, with(Items.beryllium, 250, Items.oxide, 100, Items.silicon, 250, Items.carbide, 250));
itemCapacity = 250;
consumes.power(3f);
size = 5;
@ -3588,7 +3603,7 @@ public class Blocks{
//TODO move completely to erekir tech tree?
constructor = new Constructor("constructor"){{
requirements(Category.units, with(Items.silicon, 80, Items.graphite, 120));
requirements(Category.units, with(Items.silicon, 100, Items.beryllium, 150, Items.tungsten, 80));
hasPower = true;
consumes.power(2f);
size = 3;
@ -3596,7 +3611,7 @@ public class Blocks{
//yes this block is pretty much useless
largeConstructor = new Constructor("large-constructor"){{
requirements(Category.units, with(Items.silicon, 150, Items.graphite, 150, Items.phaseFabric, 40));
requirements(Category.units, with(Items.silicon, 150, Items.oxide, 150, Items.tungsten, 200, Items.phaseFabric, 40));
hasPower = true;
consumes.power(2f);
maxBlockSize = 4;

View File

@ -1164,6 +1164,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
if(value instanceof Item) type = Item.class;
if(value instanceof Block) type = Block.class;
if(value instanceof Liquid) type = Liquid.class;
if(value instanceof UnitType) type = UnitType.class;
if(builder != null && builder.isPlayer()){
lastAccessed = builder.getPlayer().name;

View File

@ -1249,10 +1249,6 @@ public class UnitType extends UnlockableContent{
}
public void applyOutlineColor(Unit unit){
if(unit.isBoss()){
Draw.mixcol(unit.team.color, Mathf.absin(7f, 1f));
}
if(unit.drownTime > 0 && unit.lastDrownFloor != null){
Draw.color(Color.white, Tmp.c1.set(unit.lastDrownFloor.mapColor).mul(0.8f), unit.drownTime * 0.9f);
}

View File

@ -15,7 +15,7 @@ import mindustry.world.meta.*;
import static mindustry.Vars.*;
public class PayloadConveyor extends Block{
public float moveTime = 40f, moveForce = 201f;
public float moveTime = 45f, moveForce = 201f;
public @Load("@-top") TextureRegion topRegion;
public @Load("@-edge") TextureRegion edgeRegion;
public Interp interp = Interp.pow5;