Allow flipped shot patterns
This commit is contained in:
@@ -6,6 +6,14 @@ public class ShootBarrel extends ShootPattern{
|
||||
/** offset of barrel to start on */
|
||||
public int barrelOffset = 0;
|
||||
|
||||
@Override
|
||||
public void flip(){
|
||||
barrels = barrels.clone();
|
||||
for(int i = 0; i < barrels.length; i += 3){
|
||||
barrels[i] *= -1;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shoot(int totalShots, BulletHandler handler){
|
||||
for(int i = 0; i < shots; i++){
|
||||
|
||||
@@ -12,6 +12,18 @@ public class ShootMulti extends ShootPattern{
|
||||
public ShootMulti(){
|
||||
}
|
||||
|
||||
//deep copy needed for flips
|
||||
@Override
|
||||
public void flip(){
|
||||
source = source.copy();
|
||||
source.flip();
|
||||
dest = dest.clone();
|
||||
for(int i = 0; i < dest.length; i++){
|
||||
dest[i] = dest[i].copy();
|
||||
dest[i].flip();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shoot(int totalShots, BulletHandler handler){
|
||||
source.shoot(totalShots, (x, y, rotation, delay, move) -> {
|
||||
|
||||
@@ -3,7 +3,7 @@ package mindustry.entities.pattern;
|
||||
import mindustry.entities.*;
|
||||
|
||||
/** Handles different types of bullet patterns for shooting. */
|
||||
public class ShootPattern{
|
||||
public class ShootPattern implements Cloneable{
|
||||
/** amount of shots per "trigger pull" */
|
||||
public int shots = 1;
|
||||
/** delay in ticks before first shot */
|
||||
@@ -18,6 +18,19 @@ public class ShootPattern{
|
||||
}
|
||||
}
|
||||
|
||||
/** Subclasses should override this to flip its sides. */
|
||||
public void flip(){
|
||||
|
||||
}
|
||||
|
||||
public ShootPattern copy(){
|
||||
try{
|
||||
return (ShootPattern)clone();
|
||||
}catch(CloneNotSupportedException absurd){
|
||||
throw new RuntimeException("impending doom", absurd);
|
||||
}
|
||||
}
|
||||
|
||||
public interface BulletHandler{
|
||||
/**
|
||||
* @param x x offset of bullet, should be transformed by weapon rotation
|
||||
|
||||
Reference in New Issue
Block a user