Clear invalid payload ammo (#8544)

This commit is contained in:
MEEPofFaith
2023-05-06 18:34:11 -07:00
committed by GitHub
parent 6c7d506e42
commit cc17962d93
2 changed files with 18 additions and 2 deletions

View File

@@ -1,6 +1,8 @@
package mindustry.type; package mindustry.type;
import arc.func.*;
import arc.struct.*; import arc.struct.*;
import arc.struct.ObjectIntMap.*;
import arc.util.io.*; import arc.util.io.*;
import mindustry.*; import mindustry.*;
import mindustry.ctype.*; import mindustry.ctype.*;
@@ -26,6 +28,7 @@ public class PayloadSeq{
} }
public void add(UnlockableContent block, int amount){ public void add(UnlockableContent block, int amount){
if(block == null) return;
payloads.increment(block, amount); payloads.increment(block, amount);
total += amount; total += amount;
} }
@@ -42,6 +45,19 @@ public class PayloadSeq{
stacks.each(b -> remove(b.item, b.amount)); stacks.each(b -> remove(b.item, b.amount));
} }
/** @return this object */
public PayloadSeq removeAll(Boolf<UnlockableContent> pred){
Entries<UnlockableContent> iter = payloads.iterator();
while(iter.hasNext()){
Entry<UnlockableContent> e = iter.next();
if(pred.get(e.key)){
iter.remove();
total -= e.value;
}
}
return this;
}
public void clear(){ public void clear(){
payloads.clear(); payloads.clear();
total = 0; total = 0;
@@ -90,7 +106,7 @@ public class PayloadSeq{
}else{ }else{
//new format //new format
for(int i = 0; i < -amount; i++){ for(int i = 0; i < -amount; i++){
add((UnlockableContent)Vars.content.getBy(ContentType.all[read.ub()]).get(read.s()), read.i()); add(Vars.content.getByID(ContentType.all[read.ub()], read.s()), read.i());
} }
} }

View File

@@ -170,7 +170,7 @@ public class PayloadAmmoTurret extends Turret{
public void read(Reads read, byte revision){ public void read(Reads read, byte revision){
super.read(read, revision); super.read(read, revision);
payloads.read(read); payloads.read(read);
//TODO remove invalid ammo payloads.removeAll(u -> !ammoTypes.containsKey(u));
} }
} }
} }