Merge remote-tracking branch 'origin/master'

This commit is contained in:
Anuken
2022-09-14 19:39:14 -04:00
4 changed files with 44 additions and 27 deletions

View File

@@ -200,7 +200,7 @@ public class PlayerListFragment{
button.button(Icon.hammer, ustyle,
() -> ui.showConfirm("@confirm", Core.bundle.format("confirmvotekick", user.name()),
() -> Call.sendChatMessage("/votekick " + user.name())))
() -> Call.sendChatMessage("/votekick #" + user.id)))
.size(h);
}

View File

@@ -72,6 +72,11 @@ public class ContinuousLiquidTurret extends ContinuousTurret{
super.updateTile();
}
@Override
public boolean canConsume(){
return hasCorrectAmmo() && super.canConsume();
}
@Override
public BulletType useAmmo(){
//does not consume ammo upon firing
@@ -85,7 +90,11 @@ public class ContinuousLiquidTurret extends ContinuousTurret{
@Override
public boolean hasAmmo(){
return ammoTypes.get(liquids.current()) != null && liquids.currentAmount() >= 1f / ammoTypes.get(liquids.current()).ammoMultiplier;
return hasCorrectAmmo() && ammoTypes.get(liquids.current()) != null && liquids.currentAmount() >= 1f / ammoTypes.get(liquids.current()).ammoMultiplier;
}
public boolean hasCorrectAmmo(){
return !bullets.any() || bullets.first().bullet.type == peekAmmo();
}
@Override

View File

@@ -81,30 +81,7 @@ public class ContinuousTurret extends Turret{
if(bullets.any()){
for(var entry : bullets){
float
bulletX = x + Angles.trnsx(rotation - 90, shootX + entry.x, shootY + entry.y),
bulletY = y + Angles.trnsy(rotation - 90, shootX + entry.x, shootY + entry.y),
angle = rotation + entry.rotation;
entry.bullet.rotation(angle);
entry.bullet.set(bulletX, bulletY);
//target length of laser
float shootLength = Math.min(dst(targetPos), range);
//current length of laser
float curLength = dst(entry.bullet.aimX, entry.bullet.aimY);
//resulting length of the bullet (smoothed)
float resultLength = Mathf.approachDelta(curLength, shootLength, aimChangeSpeed);
//actual aim end point based on length
Tmp.v1.trns(rotation, lastLength = resultLength).add(x, y);
entry.bullet.aimX = Tmp.v1.x;
entry.bullet.aimY = Tmp.v1.y;
if(isShooting() && hasAmmo()){
entry.bullet.time = entry.bullet.lifetime * entry.bullet.type.optimalLifeFract * shootWarmup;
entry.bullet.keepAlive = true;
}
updateBullet(entry);
}
wasShooting = true;
@@ -113,6 +90,33 @@ public class ContinuousTurret extends Turret{
}
}
protected void updateBullet(BulletEntry entry){
float
bulletX = x + Angles.trnsx(rotation - 90, shootX + entry.x, shootY + entry.y),
bulletY = y + Angles.trnsy(rotation - 90, shootX + entry.x, shootY + entry.y),
angle = rotation + entry.rotation;
entry.bullet.rotation(angle);
entry.bullet.set(bulletX, bulletY);
//target length of laser
float shootLength = Math.min(dst(targetPos), range);
//current length of laser
float curLength = dst(entry.bullet.aimX, entry.bullet.aimY);
//resulting length of the bullet (smoothed)
float resultLength = Mathf.approachDelta(curLength, shootLength, aimChangeSpeed);
//actual aim end point based on length
Tmp.v1.trns(rotation, lastLength = resultLength).add(x, y);
entry.bullet.aimX = Tmp.v1.x;
entry.bullet.aimY = Tmp.v1.y;
if(isShooting() && hasAmmo()){
entry.bullet.time = entry.bullet.lifetime * entry.bullet.type.optimalLifeFract * shootWarmup;
entry.bullet.keepAlive = true;
}
}
@Override
protected void updateReload(){
//continuous turrets don't have a concept of reload, they are always firing when possible